2012-09-20 30 views
6

我試圖追查一個惱人的消息的原因在GlassFish中被污染我們的日誌文件的主要信息。Glassfish的3.1.2.2:IIOP1002:主要傳播:在找不到主題

爲了簡化我們的成立,我們有2個運行3.1.2.2 GlassFish服務器,。

服務器A上部署,使用使用Web服務角色,並在太陽ejb-jar.xml和太陽application.xml中的映射定義的基於證書的安全的Web服務。

服務器B上部署遠程EJB,沒有安全配置。

當使用類似的代碼在服務器A上調用服務器B上遠程EJB,從Web服務:

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都這樣做。現在至少日誌更具可讀性。 在glassfish-ejb-jar.xml中爲包含遠程ejbs的ejb-jar文件禁用。

<?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>