我在WAS Liberty服务器(WebSphere Application Server V8.5.5.9 Liberty Profile)中部署了一个spring boot Web应用程序。
我在server.xml中添加了一个JNDI url条目,如下所示,但我在api中的一个类无法访问它。
<jndiURLEntry jndiName="url/SSOService" value="http://ssoserver.dev.intranet/SSOService/SSOFacade" />
我在Liberty中发现一个奇怪的事情是每当我将java:comp / env /添加到任何JNDI条目时,应用程序都无法选择它并获取javax.naming.NameNotFoundException:
我通过不添加前缀修复了数据源问题,但上面的URL仅用于不在我控制范围内的api。
那么我们如何在Websphere Liberty服务器中启用java:com / env前缀? 或者有没有其他方法可以使这个工作?
答案 0 :(得分:1)
以下列方式定义JNDI URL条目时:
<jndiURLEntry jndiName="url/SSOService" value="..."/>
它将java.net.URL
字面上的url/SSOService
名称(即没有java:
前缀)。从这个位置查找JNDI条目称为“直接查找”,因为您正在查找直接在服务器配置中定义的内容。
如果要在java:comp/env/
命名空间中注册它,则必须定义“资源引用”,这将创建从服务器定义的条目到java:comp/env/
条目的绑定。可以通过注释或通过web.xml定义资源引用。
以下是如何定义注释性资源引用:
@Resource(lookup="url/SSOService", name="url/SSOServiceRef")
URL ssoServiceURL;
在这个例子中,我们说:
url/SSOService
java:comp/env/url/SSOServiceRef