远程Tomee客户端无法从JBOSS 7.1.1服务器访问EJB

时间:2015-04-10 09:16:45

标签: ejb jboss7.x remoting openejb tomee

首先,我是OpenEJB标准的新手。所以请原谅我对这个主题缺乏了解。

我在JBOSS 7.1.1 AS上运行了一个服务器应用程序。 我想创建一个在Tomee上运行的Web客户端,并能够与JBOSSS服务器通信(在我的webclient中使用EJB注入)

我尝试将jboss-client.jar添加到我的webclient,但由于Tomee有自己的openejb实现,我得到了ClassNotFoundExceptions org.jboss.ejb.client.EJBClientConfiguration

以下是我的contextInitalisation代码

Properties ejbProperties = new Properties();
    ejbProperties.put("remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED", "false");
    ejbProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
    ejbProperties.put("remote.connections", "default");
    ejbProperties.put("remote.connection.default.host", host);
    ejbProperties.put("remote.connection.default.port", port);
    ejbProperties.put("remote.connection.default.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS", "JBOSS-LOCAL-USER"); // needed for forcing authentication over remoting (i.e. if you have a custom login module)
    ejbProperties.put("remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT", "false"); // needed for a login module that requires the password in plaintext
    ejbProperties.put("remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS", "true");
    ejbProperties.put("remote.connection.default.username", username);
    ejbProperties.put("remote.connection.default.password", md5);

    final EJBClientConfiguration ejbClientConfiguration = new PropertiesBasedEJBClientConfiguration(ejbProperties);
    // here, a UnresolvedAddressException or SaslException is thrown but cannot be catched
    // so if server address is wrong or login cannot be determined
    final ConfigBasedEJBClientContextSelector selector = new ConfigBasedEJBClientContextSelector(ejbClientConfiguration);
    EJBClientContext.setSelector(selector);
    EJBClientContext.getCurrent().registerInterceptor(0, new ClientInterceptor());

    context = new InitialContext(ejbProperties);

所以我重新尝试在我的客户端使用OpenEJBproperties创建InitialContext

ejbProperties.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
    ejbProperties.put("java.naming.provider.url", "ejbd://" + host + ":" + port);
    ejbProperties.put("java.naming.security.principal", username);
    ejbProperties.put("java.naming.security.credentials", md5);

现在我得到以下错误控制台/日志 警告:RequestFailed {server = ejbd:// localhost:4447} JNDI_LOOKUP:/ ejb:XXX {error =无法确定服务器协议版本:收到OEJP / 4.6:无法读取规范:[0,0,0,12,0, 0,9,49]}

严重:Servlet / Web抛​​出了load()异常 org.apache.openejb.client.ClientRuntimeException:来自服务器的响应无效:-1     在org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:468)     在javax.naming.InitialContext.lookup(InitialContext.java:411)

另一方面,我也在控制台中看到了这些警告 警告:jar' XXX \ build \ web \ WEB-INF \ lib \ hibernate-jpa-2.0-api-1.0.1.Final.jar'包含违规类:javax.persistence.Entity。它会被忽略。 2015年4月10日上午10:31:51 org.apache.tomee.catalina.TomEEClassLoaderEnricher validateJarFile 警告:jar' XXX \ build \ web \ WEB-INF \ lib \ jboss-client.jar'包含违规类:javax.transaction.Transaction。它将被忽略。

我现在正在努力解决这个问题。任何帮助都非常感谢..

谢谢

0 个答案:

没有答案