2015-02-02 6 views
0

두 개의 JBoss EAP 6.2 서버가 JNDI를 통해 통신 할 수 있도록 노력하고 있습니다. 하나의 서버가 자체 LoginModule을 사용하고 있습니다.EAP 6.2에서 EJB 조회가 jboss-ejb-client.properties를 사용하지 않음

첫 번째 서버는 웹 서비스를 통해 요청을 받고 두 번째 서버에 위임합니다. 따라서 첫 번째 서버는 위임해야하는 빈을 찾기 위해 로그인해야합니다.

내가 알아 냈어요

, 우리는 다음과 같은 정보를 필요로하는 주 (초) 서버에 연결 : 우리는이 정보를 넣어

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에 넣을 수있는 임시 해결책이 있습니까?

Callbackhandler의 클래스 이름을 지정할 위치를 찾지 못했습니다.

미리 감사드립니다.

답변

0

org.jboss.ejb.client 카테고리의 로깅을 DEBUG 또는 TRACE로 설정하면 서버가 jboss-ejb-client.properties를 읽으려는 위치를 확인해야합니다.