2012-09-20 11 views
6

로그 파일을 오염시키는 글래스 피시의 성가신 메시지의 원인을 추적하려고합니다.글래스 피쉬 3.1.2.2 : IIOP1002 : 주 전파 : 주제에서 주 정보를 찾을 수 없습니다.

설정을 간단히하기 위해 glassfish 서버 2 대를 3.1.2.2로 실행했습니다.

서버 A에는 웹 서비스의 역할과 sun-ejb-jar.xml 및 sun-application.xml의 매핑을 사용하여 정의 된 인증서 기반 보안을 사용하여 배포 된 웹 서비스가 있습니다.

서버 B에는 보안이 구성되지 않은 원격 EJB가 배포되어 있습니다.

과 같은 코드를 사용하여 서버 A에 웹 서비스에서 서버 B에서 원격 EJB를 호출 :

Properties props = new Properties(); 
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory"); 
props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming"); 
props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"); 
props.setProperty("org.omg.CORBA.ORBInitialHost", server.getServer()); 
props.setProperty("org.omg.CORBA.ORBInitialPort", Integer.toString(server.getEjb3Port())); 
InitialContext ic = new InitialContext(props); 

return ((MyIF)ic.lookup(MyIF.class.getName())).doWork(); 

서버 A에 대한 로그는이 여기에 기록 된 다음과 도착하지만, 예상대로 EJB 호출 작동 .

[#|2012-09-20T08:43:42.141+0100|SEVERE|glassfish3.1.2|javax.enterprise.system.core.security.com.sun.enterprise.iiop.security|_ThreadID=26;_ThreadName=Thread-2;|IIOP1002: Principal propagation: Cannot find principal information in subject|#] 

누구든지이 오류에 경험이 있으며이 문제를 해결하는 방법을 알고 있습니까? 메시지의 Oracle Documentation은별로 도움이되지 않습니다.

IIOP1002 주요 전파 : 주제에 주요 정보를 찾을 수 없습니다

원인 : 주요 정보는 대상에없는

작업 : 신원 전파에 대한 구성 설정을 확인하시기 바랍니다

+0

해결 되었습니까? –

+1

@defaultlocale 불행히도, 그것은 일종의 버너에 붙어있어 잊어 버렸습니다. 확실히 로그를 읽는 것이 고통스럽게 만듭니다! –

답변

0

아이디 전파와 관련된 비슷한 문제가 있었지만 원격 EJB가 배포 된 서버에서 로그 스팸이 발생했습니다. 설치시 서버 B가됩니다. 샘플 로그 항목 :

[#|2013-06-05T10:36:50.111+0000|SEVERE|glassfish3.1.2|javax.enterprise.resource.corba.com.sun.enterprise.common.iiop.security|_ThreadID=24;_ThreadName=Thread-2;|iiop.importname_exception 
java.io.IOException: Invalid Name 
    at com.sun.enterprise.iiop.security.GSSUtils.importName(GSSUtils.java:158) 
    at com.sun.enterprise.iiop.security.GSSUtilsService.importName(GSSUtilsService.java:63) 
    at com.sun.enterprise.common.iiop.security.GSSUPName.<init>(GSSUPName.java:97) 
    at com.sun.enterprise.iiop.security.SecServerRequestInterceptor.createIdCred(SecServerRequestInterceptor.java:349) 
    at com.sun.enterprise.iiop.security.SecServerRequestInterceptor.receive_request(SecServerRequestInterceptor.java:547) 
    at com.sun.corba.ee.impl.interceptors.InterceptorInvoker.invokeServerInterceptorIntermediatePoint(InterceptorInvoker.java:612) 
    at com.sun.corba.ee.impl.interceptors.PIHandlerImpl.invokeServerPIIntermediatePoint(PIHandlerImpl.java:612) 
    at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.getServantWithPI(CorbaServerRequestDispatcherImpl.java:333) 
    at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:196) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1624) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1486) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:990) 
    at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:214)  at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:742) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:539) 
    at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2324) 
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497) 
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)|#] 

우리는 원격 EJB를 배포하는 서버의 원격 EJB를 위해 전파를 사용하지 않도록 설정하여 그것을 해결. 불행히도, 우리는 모든 단일 원격 EJB에 대해 그렇게해야한다고 생각합니다. 최소한 로그는 이제 더 읽기 쉽습니다. 원격 ejbs를 포함하는 ejb-jar 파일에 대해 glassfish-ejb-jar.xml에서 비활성화가 수행됩니다.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-ejb-jar PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 EJB 3.1//EN" "http://glassfish.org/dtds/glassfish-ejb-jar_3_1-1.dtd"> 
<glassfish-ejb-jar> 
    <enterprise-beans> 
     <ejb> 
      <ejb-name>RemoteEjb1</ejb-name> 
      <ior-security-config> 
       <sas-context> 
        <caller-propagation>NONE</caller-propagation> 
       </sas-context> 
      </ior-security-config> 
     </ejb> 
     <ejb> 
      <ejb-name>RemoteEjb2</ejb-name> 
      <ior-security-config> 
       <sas-context> 
        <caller-propagation>NONE</caller-propagation> 
       </sas-context> 
      </ior-security-config> 
     </ejb> 
    </enterprise-beans> 
</glassfish-ejb-jar>