Wildfly10(EAP 7)调用jboss 5.0.1 EJB而不使用传统jar

时间:2017-01-17 08:55:00

标签: jboss wildfly

逗人,

我试图从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 org.jboss.ejb.client.EJBClientInvocationContext@3b088d51
    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?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

CORBA标准在电线上定义了一个""远程方法调用的标准,称为IIOP或" Internet Inter-ORB Protocol"。 您需要设置使用CORBA IIOP以进行与平台无关的远程EJB调用。

因此,您需要:

  1. 配置JBoss 5以便它可以处理传入的IIOP调用;

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

  3. WildFly 10 EJB3 Reference Guide中有一些相关信息,但我不确定最新情况。

答案 2 :(得分:-1)

问题通常是由达到超时值的交易引起的。

因此可能是应用程序逻辑在这种情况下正确处理场景并且没有尝试重试活动

它可能有几个问题:

  • 连接:连接断开
  • security:user / pass invalid
  • EJB缺失:已连接,但ejb不存在
  • SSL
  • 端口
  • IP地址

JBoss维护与其他服务器的持久连接,因此当客户端看到此消息时,这意味着没有连接到您尝试调用的ejb的服务器,因此当连接失败时将记录一条消息另一台服务器。

引起:java.lang.IllegalStateException:EJBCLIENT000025:没有可用于处理的EJB接收器

您能否澄清以下内容:

1#是你在jboss 5.0.1上部署的EJB吗?

2#您从Wildfly 10或EAP 7调用EJBS,意味着您的客户端部署在Wildfly 10或EAP 7中?