2012-09-20 20 views
6

में मुख्य जानकारी नहीं मिल रही है, मैं ग्लासफ़िश में एक कष्टप्रद संदेश के कारण को ट्रैक करने का प्रयास कर रहा हूं जो हमारी लॉग फ़ाइलों को प्रदूषित कर रहा है।ग्लासफ़िश 3.1.2.2: IIOP1002: प्रिंसिपल प्रचार: विषय

हमारे सेट अप को सरल बनाने के लिए, हमारे पास 2 ग्लासफ़िश सर्वर 3.1.2.2 चल रहे हैं।

सर्वर ए पर वेब सेवा में भूमिकाओं का उपयोग करके परिभाषित सर्टिफिकेट आधारित सुरक्षा और सूर्य-ईजेबी-जेआर.एक्सएमएल और सन-एप्लिकेशन.एक्सएमएल में मैपिंग का उपयोग करके उस पर एक वेब सेवा तैनात की गई है।

सर्वर बी पर कोई रिमोट ईजेबी तैनात नहीं है, जिसमें कोई सुरक्षा कॉन्फ़िगर नहीं है।

जब सर्वर एक पर सर्वर बी पर दूरस्थ 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(); 

सर्वर एक पर लॉग इसे करने के लिए लॉग इन निम्न हो जाता है, लेकिन उम्मीद के रूप में काम करता है 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 प्रधान प्रचार: विषय में प्रिंसिपल जानकारी नहीं खोजा जा सका

कारण: प्रिंसिपल जानकारी विषय में नहीं पाया जाता

कार्रवाई: पहचान प्रसार के लिए config सेटिंग्स की जाँच करें

+0

क्या आप इसे हल करने में सक्षम थे? दुर्भाग्यवश –

+1

@defaultlocale नहीं, यह वापस बर्नर पर डाल दिया गया है और भूल गया है। यह निश्चित रूप से एक दर्द लॉग पढ़ने बनाता है! –

उत्तर

0

हमें पहचान प्रसार से संबंधित एक ही समस्या थी, लेकिन हमें सर्वर पर लॉग स्पैम मिला जहां रिमोट ईजेबी तैनात किए गए थे। यह आपके सेटअप में सर्वर बी होगा। नमूना लॉग प्रविष्टि:

[#|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)|#] 

हम इसे सर्वर पर दूरस्थ EJBs जहां दूरदराज के EJBs तैनात किया गया है के लिए प्रचार को अक्षम करके हल किया। दुर्भाग्यवश, ऐसा लगता है कि हमें हर एक दूरस्थ ईजेबी के लिए ऐसा करना था। कम से कम लॉग अब और अधिक पठनीय हैं। दूरस्थ ejbs युक्त ejb-jar फ़ाइल के लिए ग्लासफ़िश-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> 
संबंधित मुद्दे