EAP 6.2上的EJB查找不使用jboss-ejb-client.properties

时间:2015-02-02 15:43:46

标签: jboss ejb jndi jboss-eap-6

我们试图让两个JBoss EAP 6.2服务器通过JNDI进行通信。 一台服务器正在使用它自己的LoginModule。

第一台服务器将通过webservices接收请求并将它们委托给第二台服务器。因此,第一台服务器需要登录才能查找需要委派的bean。

我已经发现,我们需要以下信息才能连接到主(第二)服务器:

remote.connections=default

endpoint.name=client-endpoint

remote.connection.default.port=4447
remote.connection.default.host=localhost

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false

remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT=false
remote.connection.default.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS=JBOSS-LOCAL-USER
remote.connection.default.callback.handler.class=our.own.callbackhandler.class

java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
java.naming.factory.url.pkgs=org.jboss.ejb.client.naming

我们将此信息放入'jboss-ejb-client.properties'文件中,但我们的服务器没有对此作出反应。

教程(https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+server+instance)说我们需要使用jboss-ejb-client.xml。 由于我们的LoginModule(和Callbackhandler),我们不需要用户和/或密码来连接服务器!

我对该问题的第一个解决方案是使用Properties-Class将所有信息放入InitialContext。

 final Properties props = new Properties();
         props.put("remote.connections", "default");
         props.put("remote.connection.default.host", "localhost");
         props.put("remote.connection.default.port", "4447");
         props.put("remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS", "false");
         props.put("remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT", "false");
         props.put("remote.connection.default.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS", "JBOSS-LOCAL-USER");
         props.put("remote.connection.default.callback.handler.class",
         "our.own.callbackhandler.class");
         props.put("org.jboss.ejb.client.scoped.context", "true");
         props.put("remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED", "false");
         props.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
Context ic = new InitialContext(prop);

它正在那样工作。

我现在的问题是:有没有办法将这些信息放在standalone.xml或jboss-ejb-client.properties / jboss-ejb-client.xml中?

我找不到任何放置Call​​backhandler类名的地方。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

尝试将类别org.jboss.ejb.client的日志记录调到DEBUG或TRACE,您应该看到服务器尝试从哪里读取jboss-ejb-client.properties。