日期:2014-05-20  浏览次数:20803 次

怎么调用jboss的jndi
RT,我就配置了数据源和写了一个java类
Java code
public class JndiTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Connection conn = null;
        try {
            Context context = new InitialContext();
            DataSource ds = (DataSource) context.lookup("java:myjndi");
            conn = ds.getConnection();
            if (conn != null) {
            System.out.print("hello");

            }
        } catch (Exception e) {
        }


想请问下有经验的朋友,要怎样才能调用jboss的jndi读取查询数据库,最好能举个例子,谢谢!

------解决方案--------------------
读取jboss的数据库连接池,得在jboss的web管理界面里面添加,然后就是看context.lookup("java:myjndi");这里的名字是不是java:myjndi,不同的web容器差别比较大,主要是冒号前面的名字

Jboss的连接池个人感觉性能不是很好,而且使用不灵活,还不如用proxool,这个和web容器无关,性能也不错,可以尝试一下
------解决方案--------------------
探讨
读取jboss的数据库连接池,得在jboss的web管理界面里面添加,然后就是看context.lookup("java:myjndi");这里的名字是不是java:myjndi,不同的web容器差别比较大,主要是冒号前面的名字

Jboss的连接池个人感觉性能不是很好,而且使用不灵活,还不如用proxool,这个和web容器无关,性能也不错,可以尝试一下

------解决方案--------------------
单个java类调用 jboss里面的 JNDI

Properties properties=new Properties();
//通过事例的上下文来通过JNDI命名机制查找服务器位置
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
//通过事例的路径查找连接服务器,这里是本机
properties.setProperty(Context.PROVIDER_URL,"127.0.0.1:1099");
context = new InitialContext(properties);
DataSource ds = (DataSource) context.lookup("java:myjndi");


web 工程的话,发布到 jboss里面运行,你就可以在 web.xml里面

<resource-ref>
<description>jndidatasource</description>
<res-ref-name>jboss中jndi名字</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

然后再在程序里面像你那样调用。



------解决方案--------------------
4楼正解
------解决方案--------------------
4楼正解
------解决方案--------------------
探讨
我按4楼那样做了,为什么还是不行,是不是jboss其他地方还要配置??

------解决方案--------------------
4楼是对的,不过你要看你怎么启动的,启动时用的localhost或外网IP,就不一样了,用了ip就直接用ip,用localhost就是127.0.0.1