EJB查找 - 无法创建远程连接

时间:2013-03-20 21:41:27

标签: java-ee lookup ejb-3.1

我有查询我的ejb的问题。在servlet中一切正常,但我需要从远程klient连接到ejb。

来自部署控制台日志:

 java:global/easymenu-webappEAR/EasyMenu/CounterBean!sk.jbase.projects.easymenu.CounterBeanRemote
 java:app/EasyMenu/CounterBean!sk.jbase.projects.easymenu.CounterBeanRemote
 java:module/CounterBean!sk.jbase.projects.easymenu.CounterBeanRemote
 java:jboss/exported/easymenu-webappEAR/EasyMenu/CounterBean!sk.jbase.projects.easymenu.CounterBeanRemote
 java:global/easymenu-webappEAR/EasyMenu/CounterBean
 java:app/EasyMenu/CounterBean
 java:module/CounterBean

我在webapp中有ejbmodule(我不知道它是如何分开的)

geting context:

public static InitialContext getInitialContext(String url) throws NamingException {
    Properties properties = new Properties();

    properties.setProperty(Context.URL_PKG_PREFIXES,
            "org.jboss.ejb.client.naming");
    properties.setProperty(Context.PROVIDER_URL, url);
    properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
    properties.setProperty(Context.SECURITY_PRINCIPAL, "pch");
    properties.setProperty(Context.SECURITY_CREDENTIALS, "peterch");

    return new InitialContext(properties);
}

查询:

            CounterBeanRemote cbr = (CounterBeanRemote) ServiceLocator
                    .getInitialContext("remote://localhost:8080").lookup("java:app/EasyMenu/CounterBean!"
        + CounterBeanRemote.class.getName());

            System.out.println("Result: " + cbr.getMessage());

异常

mar 20, 2013 10:27:04 PM org.xnio.Xnio <clinit>
INFO: XNIO Version 3.0.3.GA
mar 20, 2013 10:27:04 PM org.xnio.nio.NioXnio <clinit>
INFO: XNIO NIO Implementation Version 3.0.3.GA
mar 20, 2013 10:27:04 PM org.jboss.remoting3.EndpointImpl <clinit>
INFO: JBoss Remoting version 3.2.3.GA
javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.RuntimeException: Operation failed with status WAITING]
    at org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:36)
    at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:121)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
    at javax.naming.InitialContext.init(InitialContext.java:242)
    at javax.naming.InitialContext.<init>(InitialContext.java:216)
    at sk.jbase.projects.easymenu.client.EasyMenuClient.getInitialContext(EasyMenuClient.java:58)
    at sk.jbase.projects.easymenu.client.EasyMenuClient.main(EasyMenuClient.java:38)
Caused by: java.lang.RuntimeException: Operation failed with status WAITING
    at org.jboss.naming.remote.protocol.IoFutureHelper.get(IoFutureHelper.java:89)
    at org.jboss.naming.remote.client.NamingStoreCache.getRemoteNamingStore(NamingStoreCache.java:56)
    at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateCachedNamingStore(InitialContextFactory.java:166)
    at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateNamingStore(InitialContextFactory.java:139)
    at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:104)
    ... 6 more

2 个答案:

答案 0 :(得分:0)

你使用哪个JBoss版本? 在JBoss 7.1中,默认远程端口是4447,您应该使用java:jboss / exported /之后的URL。如果您使用“org.jboss.ejb.client.naming”,则需要URL的“ejb:”前缀以及通常位于文件jboss-ejb-client.properties中的属性。

答案 1 :(得分:0)

我在JBOSS AS 7.2的最后一夜构建中遇到了同样的问题。当我刚刚将类路径中的jboss-client.jar恢复为旧版本时,它开始像魅力一样工作。

修复上面的URL和查找以及jboss-client.jar后,应该这样做。