关于网友提出的“ jboss中jndi的问题?”问题疑问,本网通过在网上对“ jboss中jndi的问题?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: jboss中jndi的问题?描述:
调用在jboss中配置的datasource的问题(jboss版本3.2.6)。
在jboss下配置了一个access的datasource(JNDI名称:java:/CruiseAccessDS)
jboss启动时显示如下信息:
11:18:07,648 INFO [CruiseAccessDS] Bound connection factory for resource adapter
for ConnectionManage 'jboss.jca:service=LocalTxCM, name=CruiseAccessDS to JNDI name 'java:/CruiseAccessDS'
此信息显示配置成功
如果是在JSP(通过JavaBean),或Servlet,EJB中使用此DataSource是没有问题的,因为它们和datasource在同一个application server内。
代码如下:
......
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:/CruiseAccessDS");
......
运行通过!
但如果是一个swing的client,要使用application server内的datasource,就有问题了。
代码如下:
......
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
prop.put(Context.PROVIDER_URL, "localhost:1099");
prop.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
Context ctx = new InitialContext(prop);
DataSource ds = (DataSource)ctx.lookup("java:/CruiseAccessDS");
......
运行时报错
javax.naming.NameNotFoundException: CruiseAccessDS not bound
注:在client下调用EJB或消息队列均运行通过,如:
Object obj = ctx.lookup("HelloWorldEJB");
Object obj = ctx.lookup("queue/testQueue");
那位大虾帮帮忙,是不是application server有在容器外有调用权限的问题?