1

我在 weblogic 上部署了一个 ejb。我能够通过一个简单的 java 客户端成功获取远程引用。但是,当我通过我的 Web 应用程序访问 ejb 时,它会引发以下异常:

javax.naming.CommunicationException [Root exception is weblogic.socket.UnrecoverableConnectException: [Login failed for an unknown reason: HTTP/1.1 404 Not Found]]
    at weblogic.jndi.internal.ExceptionTranslator.toNamingException(ExceptionTranslator.java:40)
    at weblogic.jndi.WLInitialContextFactoryDelegate.toNamingException(WLInitialContextFactoryDelegate.java:783)
    at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:367)
    at weblogic.jndi.Environment.getContext(Environment.java:315)
    at weblogic.jndi.Environment.getContext(Environment.java:285)
    at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:117)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    at javax.naming.InitialContext.init(InitialContext.java:223)
    at javax.naming.InitialContext.<init>(InitialContext.java:197)

我不确定为什么协议是 HTTP,我使用的是 t3。这是我的代码:

Properties serverProperties = new Properties();
        serverProperties.put("java.naming.provider.url", "t3://localhost:3080");
        serverProperties.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");

        InitialContext context = new InitialContext(serverProperties);
4

1 回答 1

2

我怀疑你的 weblogic 监听地址是用你服务器的主机名配置的。请参阅以下文章:http ://docs.oracle.com/cd/E17904_01/web.1111/e13709/setup.htm

具体来说,它说:

本地主机注意事项

如果您将服务器实例的侦听地址标识为 localhost,则非本地进程将无法连接到该服务器实例。只有托管服务器实例的机器上的进程才能连接到服务器实例。如果服务器实例必须可以作为 localhost 访问(例如,如果您有连接到 localhost 的管理脚本),并且还必须可以被远程进程访问,请将监听地址留空。服务器实例将确定机器的地址并监听它。

于 2013-09-04T20:06:40.000 回答