0

我有一个线程在我的本地 weblogic 服务器中运行,该线程每天运行一次,它尝试与运行在不同 weblogic 服务器中的另一个应用程序建立连接。每当我的方法创建一个远程对象并尝试调用远程方法时,我都会遇到异常

[安全:090398] 无效的主题:principals=[weblogic, Administrators]

这是我的代码:

    Properties myEnv = new Properties();
    myEnv.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    myEnv.put(Context.PROVIDER_URL, "t3//123.345.234.123:1234");
    myEnv.put( Context.SECURITY_PRINCIPAL, username );
    myEnv.put( Context.SECURITY_CREDENTIALS, password );        
    InitialContext context;
    Object lookupObj;
    try {
        context = new InitialContext(_contextEnv);  
        lookupObj = context.lookup("ejb.lookup.bean");
        MyHome home = (MyHome) PortableRemoteObject.narrow(lookupObj, MyHome.class);
        MyRemote remote =home.create();
        if (null != context) {
            try {
                context.close();
            }
            catch (Exception e) {
            //

            }
        }
        return remote;
    }  catch (Exception e) {            
        e.printStackTrace();
    }

谁能告诉我出了什么问题?

4

2 回答 2

0

我认为这两个 weblogic 服务器实例都在 2 个不同的域中运行。因此,您需要启用两个域之间的信任。看看这个文档:https ://docs.oracle.com/cd/E21764_01/web.1111/e13707/domain.htm#SECMG402

此外,当更需要时,不要忘记在 finally 子句中关闭 JNDI 上下文。

于 2016-05-10T15:28:53.520 回答
0

就我而言,我只是添加参数

-Dweblogic.security.crypto.verifyPriorDigest=true 
-Dweblogic.security.crypto.generatePriorDigest=true

使用 Weblogic Server 12.2.1.4.0 到我的 JAVA_OPTIONS,例如,如果您使用 nodeMangerService,您可以编辑您的 startNodeManager.sh 并添加参数。

于 2019-12-26T03:21:11.183 回答