Jakarta ee Glassfish 3.1.2.2:IIOP1002:主要传播:无法在主题中找到主要信息

Jakarta ee Glassfish 3.1.2.2:IIOP1002:主要传播:无法在主题中找到主要信息,jakarta-ee,glassfish,ejb,glassfish-3,iiop,Jakarta Ee,Glassfish,Ejb,Glassfish 3,Iiop,我正试图找出glassfish中一条令人讨厌的消息的原因,这条消息正在污染我们的日志文件 为了简化设置,我们有两台运行3.1.2.2的glassfish服务器 服务器A上部署了一个web服务,使用基于证书的安全性,该安全性是使用web服务中的角色以及sun-ejb-jar.xml和sun-application.xml中的映射定义的 服务器B上部署了一个远程EJB,没有配置安全性 在服务器B上调用远程EJB时,请使用以下代码从服务器A上的web服务调用: Properties props = n

我正试图找出glassfish中一条令人讨厌的消息的原因,这条消息正在污染我们的日志文件

为了简化设置,我们有两台运行3.1.2.2的glassfish服务器

服务器A上部署了一个web服务,使用基于证书的安全性,该安全性是使用web服务中的角色以及sun-ejb-jar.xml和sun-application.xml中的映射定义的

服务器B上部署了一个远程EJB,没有配置安全性

在服务器B上调用远程EJB时,请使用以下代码从服务器A上的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|#]
是否有人曾经遇到过此错误并知道如何解决此问题

这条消息上的内容没有多大帮助

IIOP1002主体传播:在中找不到主体信息 主题

原因:主题中未找到主要信息

操作:请检查身份传播的配置设置


我们遇到了与身份传播相关的类似问题,但在部署远程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)|#]
javax.enterprise.resource.corba.com.sun.enterprise.common.iiop.security|u ThreadID=24;|u ThreadName=Thread-2;| iiop.importname|异常
java.io.IOException:名称无效
位于com.sun.enterprise.iiop.security.GSSUtils.importName(GSSUtils.java:158)
位于com.sun.enterprise.iiop.security.GSSUtilsService.importName(GSSUtilsService.java:63)
位于com.sun.enterprise.common.iiop.security.GSSUPName.(GSSUPName.java:97)
位于com.sun.enterprise.iiop.security.SecServerRequestInterceptor.createIdCred(SecServerRequestInterceptor.java:349)
位于com.sun.enterprise.iiop.security.SecServerRequestInterceptor.receive_request(SecServerRequestInterceptor.java:547)
在com.sun.corba.ee.impl.interceptors.InterceptorInvoker.invokeServerInterceptorIntermediatePoint(InterceptorInvoker.java:612)
位于com.sun.corba.ee.impl.interceptors.PIHandlerImpl.InvokeServerPiMediatePoint(PIHandlerImpl.java:612)
位于com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.getServantWithPI(CorbaServerRequestDispatcherImpl.java:333)
位于com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:196)
位于com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.HandlerRequest(CorbaMessageMediatorImpl.java:1624)
位于com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1486)
com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:990)
com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:214)com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.HandlerRequest(CorbaMessageMediatorImpl.java:742)
com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:539)
在com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2324)
位于com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497)
在com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)|
我们通过在部署远程EJB的服务器上禁用远程EJB的传播来解决这个问题。不幸的是,似乎我们必须为每个远程EJB都这样做。至少现在日志的可读性更强了。 对于包含远程ejb的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>

RemoteEjb1
没有一个
RemoteEjb2
没有一个

你能解决这个问题吗?@defaultlocale不幸的是,它被放在了次要位置,被遗忘了。它确实让阅读日志成为一种痛苦!