2

我必须构建两个 Web 服务应用程序以部署到不同的服务器(WebSphere 6.1)。其中一个通过调用其服务“链接”到另一个,因此第一个 Web 服务应用程序应该知道第二个的端点 URL。

这些应用程序在不同的环境中运行:开发、测试和生产。我决定将该 URL 作为环境参数存储在第一个应用程序的 web.xml 文件中,以便在将它们从一个开发阶段移动到另一个开发阶段时具有一定的灵活性,因此可以在部署期间设置端点 URL。

在我的第一个应用程序的 web.xml 中,我将环境参数描述为:


<env-entry>
<description>Second WS</description>
 <env-entry-name>SECOND_SVC_URL</env-entry-name>
 <env-entry-type>java.lang.String</env-entry-type>
 <env-entry-value>http//domain/url</env-entry-value>
</env-entry> 

在 Java 代码中,我有:


Context initialContext = new InitialContext();
Context context = (Context)initialContext.lookup("java:comp/env");
Object o = context.lookup(“SECOND_SVC_URL”);
…

我在该代码的第二行遇到了异常:


javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
 at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:653)
 at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:257)
 at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:294)
 at javax.naming.InitialContext.lookup(InitialContext.java:361)…

请,任何帮助将不胜感激。

谢谢你。

4

1 回答 1

1

我找到了问题的原因,只是没有时间回答我自己的问题。在其中一个应用程序类中从 main() 方法测试我的代码对我来说是愚蠢的。当然,您应该首先部署并启动您的 Web 应用程序(在我的情况下是 Web 服务应用程序),然后尝试从应用程序上下文中获取环境变量。现在一切正常。

于 2010-01-20T17:46:29.760 回答