Dav*_*son 6 ejb glassfish java-ee iiop glassfish-3
我试图追踪玻璃鱼中污染我们的日志文件的恼人消息的原因.
为了简化我们的设置,我们有2个运行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();
Run Code Online (Sandbox Code Playgroud)
登录服务器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|#]
Run Code Online (Sandbox Code Playgroud)
有没有人有这个错误的经验,知道如何解决这个问题?
在Oracle文档上的信息是不是非常有帮助.
IIOP1002主要传播:无法在主题中找到主要信息
原因:主题中未找到主要信息
操作:请检查身份传播的配置设置
小智 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)|#]
Run Code Online (Sandbox Code Playgroud)
我们通过在部署远程 EJB 的服务器上禁用远程 EJB 的传播来解决这个问题。不幸的是,我们似乎必须对每个远程 EJB 执行此操作。至少现在日志更具可读性。在 glassfish-ejb-jar.xml 中对包含远程 ejb 的 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1087 次 |
| 最近记录: |