Java 无法从WAS Liberty server中部署的Spring启动应用程序访问JNDI Url上下文
我在WAS Liberty server(WebSphere application server版本8.5.5.9 Liberty概要)中部署了一个spring boot web应用程序 我在server.xml中添加了一个JNDI url条目,如下所示,但api中的一个类无法访问它Java 无法从WAS Liberty server中部署的Spring启动应用程序访问JNDI Url上下文,java,spring-boot,jndi,websphere-liberty,open-liberty,Java,Spring Boot,Jndi,Websphere Liberty,Open Liberty,我在WAS Liberty server(WebSphere application server版本8.5.5.9 Liberty概要)中部署了一个spring boot web应用程序 我在server.xml中添加了一个JNDI url条目,如下所示,但api中的一个类无法访问它 <jndiURLEntry jndiName="url/SSOService" value="http://ssoserver.dev.intranet/SSOService/SSOFacade" />
<jndiURLEntry jndiName="url/SSOService" value="http://ssoserver.dev.intranet/SSOService/SSOFacade" />
我在Liberty中发现了一件奇怪的事情:每当我将java:comp/env/添加到任何JNDI条目时,应用程序都无法选择它并获取javax.naming.NameNotFoundException:
我通过不添加前缀修复了数据源问题,但上面的URL仅用于不在我控制范围内的api
那么,我们如何在WebSphereLiberty服务器中启用java:com/env前缀呢?
或者,是否有其他方法可以使其工作?当您以以下方式定义JNDI URL条目时:
<jndiURLEntry jndiName="url/SSOService" value="..."/>
在这个例子中,我们说:
url/SSOService
java:comp/env/url/SSOServiceRef
你看到了吗?你的例子看起来很合理。也许创建一个测试端点,看看是否可以在自己的代码中查找资源。也许API需要的是字符串而不是URL实例?感谢您的输入,我在本地机器上托管的tomcat中有相同的代码可以正常工作。它能够正确地检索JNDI,但在WAS Liberty中部署时却不能。它跳过前缀“java:comp/env/”。在tomcat中,如果没有前缀,它将不工作。我已经浏览了几乎所有的websphere网站,包括您提到的网站,但没有找到任何清晰的线索。最后,我将尝试获取
url/SSOService
,并将其绑定到java:comp/env/url/SSOServiceRef
,然后将结果发布到这里。嗨,安迪,我尝试绑定对象,但遇到另一个错误初始上下文为只读,因此无法继续。有什么想法吗。
@Resource(lookup="url/SSOService", name="url/SSOServiceRef")
URL ssoServiceURL;