RT,我就配置了数据源和写了一个java类
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读取查询数据库,最好能举个例子,谢谢!

解决方案 »

  1.   

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

  2.   

    单个java类调用 jboss里面的 JNDIProperties 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> 然后再在程序里面像你那样调用。
      

  3.   

    我按4楼那样做了,为什么还是不行,是不是jboss其他地方还要配置??
      

  4.   


    你确定你要调用的 jndi 的配置文件放到 jboss的 deploy 目录下? 比如你自定义一个数据源文件,名字叫 oracle-ds.xml,里面就是描述你的 jndi数据源,这个文件你得放到 jboss/server/defalult/deploy 。目录下然后启动jboss
      

  5.   

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