2012-09-20 20 views
6

ログファイルを汚染しているglassfishの厄介なメッセージの原因を追跡しようとしています。Glassfish 3.1.2.2:IIOP1002:プリンシパル伝播:件名にプリンシパル情報が見つかりません

設定を簡略化するため、3.1.2.2を実行している2つのglassfishサーバーがあります。

サーバーAには、Webサービスにおける役割と太陽のejb-jar.xmlのと日-application.xmlのマッピングを使用して定義された証明書ベースのセキュリティを使用して、その上にデプロイされたWebサービスを提供しています。

サーバーBにはリモートEJBが展開されており、セキュリティは構成されていません。

のようなコードを使用して、サーバーA上のWebサービスから、サーバー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主な伝播: 対象に主要な情報を見つけることができません

原因:主な情報は対象では見られない

処置:ID伝播のためのコンフィグ設定を確認してください

+0

これを解決できましたか? –

+1

@defaultlocale残念ながら、それはバックバーナーに置かれて忘れてしまった。それは確かにログを読むのを苦痛にさせます! –

答えて

0

IDの伝播に関連して同様の問題が発生しましたが、リモート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> 
関連する問題