Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > EJB через Remote Interface


Автор: polosatij 11.1.2009, 13:27

хочу достать Stateless Session Bean через Remote Interface.
сам Stateless Bean выглядит сл. образом:

Код

@Stateless
@LocalBinding(jndiBinding = "StaticDataParserServiceLocale")
@RemoteBinding(jndiBinding = "StaticDataParserServiceRemote")
public class StaticDataParserService implements IStaticDataParserServiceLocal, IStaticDataParserServiceRemote {
...


сам код Standalone приложения:

Код

package de.comsoft.cadas_ims.parsing_with_logic;

import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;

import de.comsoft.cadas_ims.services.parser.IStaticDataParserService;

public class HelloTest {

    IStaticDataParserService hellobean;

    public HelloTest() {
        try {
            final Context jndiContext = getInitialContext();

//            final InitialContext ctx = getInitialContext();
//            System.out.println("Liste der Namen im JNDI-Context:");
//            showJndiContext(ctx, "", "");
//            ctx.close();

             System.out.println(jndiContext.lookup("java:StaticDataParserServiceRemote"));
            // final NamingEnumeration ne =
            // jndiContext.listBindings(StaticDataParserService.getLookupName());
            //
            // while(ne.hasMore()) {
            // System.out.println(ne.next());
            // }
            //
            //
            // System.out.println(jndiContext.lookup("java:comp/env/ejb/" +
            // StaticDataParserService.getLookupName()));

            // final IStaticDataParserServiceLocal staticDataParser =
            // (IStaticDataParserServiceLocal)
            // NameResolver.lookupSessBean(StaticDataParserService.getLookupName());

            // final Object ref =
            // jndiContext.lookup("java:comp/env/ejb/HelloEJB3");
            // hellobean = (IStaticDataParserService) ref;
        } catch (final javax.naming.NamingException ne) {
            ne.printStackTrace();
        }
    }

    public static void showJndiContext(final InitialContext pCtx, final String pName, final String pSpace) {

        try {
            final NamingEnumeration en = pCtx.list(pName);
            while (en.hasMoreElements()) {
                final String delim = (null != pName && 0 < pName.length()) ? "/" : "";
                final NameClassPair nc = (NameClassPair) en.next();
                System.out.println(pSpace + pName + delim + nc);
                if (40 > pSpace.length()) {
                    showJndiContext(pCtx, nc.getName(), "    " + pSpace);
                }
            }
        } catch (final javax.naming.NamingException ex) {
            ex.printStackTrace();
        }
    }

    protected void sayHello() {
        System.out.println("***" + hellobean.sayHello());
    }

    public static void main(final String[] args) {
        final HelloTest helloClient = new HelloTest();
        // helloClient.sayHello();
    }

    /**
     * This is vender dependency.
     *
     * @return initial context.
     * @throws javax.naming.NamingException
     */
    public static InitialContext getInitialContext() throws NamingException {
        final Properties p = new Properties();
        p.put(Context.INITIAL_CONTEXT_FACTORY,
                "org.jnp.interfaces.NamingContextFactory");
        p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
        p.put(Context.PROVIDER_URL, "jnp://localhost:1099");
        return new InitialContext(p);
    }

}


ошибка:

Код

javax.naming.NameNotFoundException: StaticDataParserServiceRemote not bound
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
    at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
    at org.jnp.server.NamingServer.lookup(NamingServer.java:296)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
    at javax.naming.InitialContext.lookup(InitialContext.java:351)
    at de.comsoft.cadas_ims.parsing_with_logic.HelloTest.<init>(HelloTest.java:26)
    at de.comsoft.cadas_ims.parsing_with_logic.HelloTest.main(HelloTest.java:72)


не могу найти в jmx-console jndi имя моего StaticDataParserService бина.. Бин задеплоился и работает через локальный интерфейс.. только вот lookup там написан на нашем сервере руками, а люди его написавшие придут лишь завтра.. где или как можно найти jndi имя моего бина?

Автор: ivg 11.1.2009, 19:37
А так?:
Код

26:             System.out.println(jndiContext.lookup("StaticDataParserServiceRemote"));

Цитата(polosatij @  11.1.2009,  15:27 Найти цитируемый пост)
не могу найти в jmx-console jndi имя моего StaticDataParserService бина..

service=JNDIView -> operation java.lang.String list(); -> [invoke]

Автор: powerOn 11.1.2009, 20:07
Цитата(polosatij @  11.1.2009,  13:27 Найти цитируемый пост)
@LocalBinding(jndiBinding = "StaticDataParserServiceLocale")
@RemoteBinding(jndiBinding = "StaticDataParserServiceRemote")


по спецификации, нужно использовать аннотацию @javax.ejb.Remote и соответствующий интерфейс для того что бы зарегистрировать бин в  JNDI.

Автор: polosatij 12.1.2009, 18:15

проблему решил.. бин ны был задеплоен.. smile

пасиб всем  smile 

Цитата(ivg @  11.1.2009,  19:37 Найти цитируемый пост)
service=JNDIView -> operation java.lang.String list(); -> [invoke] 


угу.. нашёл вчера, пасиб  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)