2017-01-17 25 views
1

逗人,Wildfly10(EAP 7)调用的JBoss 5.0.1 EJB没有遗留罐子

我试图从Wildfly 10或EAP 7.

我的代码调用的JBoss 5.0.1 EJB3:

final Properties env = new Properties(); 
    env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 
    env.put("java.naming.factory.url.pkgs", "org.jboss.ejb.client.naming"); 
    env.put(Context.PROVIDER_URL, "remoting://localhost:1099"); 
    env.put("org.jboss.ejb.client.scoped.context", "true"); 
    InitialContext initialContext = new InitialContext(env); 
    TestBeanRemote remote = (TestBeanRemote) initialContext.lookup(
"ejb:TestEar/TestBean/TestBean!com.test.TestBeanRemote"); 

但它说:

Exception in thread "main" java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling [appName:BilllingFacadeCallbackEAR, moduleName:BilllingFacadeCallback, distinctName:] combination for invocation context [email protected] 
    at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:798) 
    at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:128) 
    at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:186) 
    at org.jboss.ejb.client.EJBInvocationHandler.sendRequestWithPossibleRetries(EJBInvocationHandler.java:255) 
    at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:200) 
    at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:183) 
    at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:146) 
    at com.sun.proxy.$Proxy2.getActions(Unknown Source) 
    at TestStandalone.main(TestStandalone.java:28) 

有没有什么解决调用原有的JBoss不老坛子?

回答

-1

该问题通常是由达到超时值的事务引起的。

所以这可能是应用程序逻辑正确处理方案在这种情况下,而不是试图重试活动

它可以有几个问题:

  • 连接:连接破
  • 安全性:用户/通过无效
  • EJB缺失:连接,但ejb不存在
  • SSL
  • 端口
  • IP地址

JBoss的维护与其他服务器的持久连接,因此当客户看到这个消息,这意味着有是有,你试图调用EJB服务器没有连接,所以当连接失败时将会记录一条消息到另一台服务器。

致:java.lang.IllegalStateException:EJBCLIENT000025:没有可用于处理

EJB接收你能澄清如下:

1#被部署在JBoss 5.0.1 EJB组件?

2#你是从Wildfly 10或EAP 7调用EJB组件,意味着你的客户端部署在Wildfly 10或EAP 7?

+0

#1是的,它被部署。我已成功将它与传统ejb客户端库连接起来。 \t \t properties.put(“java.naming.factory.initial”,“org.jnp.interfaces.NamingContextFactory”); \t \t properties.put(“java.naming.factory.url.pkgs”,“org.jboss.naming:org.jnp.interfaces”); #2我从Eap 7调用EJB – user1028269

+0

由于以下原因,发生了此问题,请检查: - 连接中断 - 安全性:用户/传递无效 - EJB缺失:已连接,但ejb不存在 - SSL - 正确的端口 - 正确的IP地址 –

0

有一个遗留子系统,但我不知道它的当前状态。 https://github.com/jboss-set/jboss-as-legacy

+0

它是一样的,它使用传统的罐子(旧的jboss客户端罐子):( – user1028269

+0

由于下面的协议已经改变(JNDI,远程处理)我不明白你可以期待为了连接工作没有那些旧罐子 – ehsavoie

0

CORBA标准定义了一种用于进行远程方法调用的称为IIOP或“Internet Inter-ORB协议”的“跨线”标准。 您需要设置为使用CORBA IIOP来实现独立于平台的远程EJB调用。

因此,您需要:

  1. 配置JBoss 5以便它可以处理传入IIOP呼叫;

  2. 配置WildFly 10/EAP 7使用IIOP进行传出EJB调用。

WildFly 10 EJB3 Reference Guide有一些这方面的信息,虽然我不知道如何保持最新状态。