JNDI本地加载

测试时,如果不想启动服务器,但是需要使用上下文环境,

private static void initJndi(){

try {
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory"); //需要naming-java包
System.setProperty(Context.URL_PKG_PREFIXES, "org.apache.naming");//需要naming-common包
InitialContext ic = new InitialContext();


ic.createSubcontext("java:");
ic.createSubcontext("java:comp");
ic.createSubcontext("java:comp/env");
ic.createSubcontext("java:comp/env/jdbc");

MysqlConnectionPoolDataSource ds = new MysqlConnectionPoolDataSource();

ds.setURL("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8");
ds.setUser("root");
ds.setPassword("pass");
ic.bind("java:comp/env/jdbc/mysql", ds);

Object obj=ic.lookup("java:comp/env/jdbc/mysql");/ /obj就是保存到ic中的ds
System.out.println("ss");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}


<!-- https://mvnrepository.com/artifact/tomcat/naming-common -->
<!-- <dependency>
   <groupId>tomcat</groupId>
   <artifactId>naming-common</artifactId>
   <version>5.0.28</version>
   <scope>test</scope>
</dependency> -->
<!-- https://mvnrepository.com/artifact/tomcat/naming-java -->
<!-- <dependency>
   <groupId>tomcat</groupId>
   <artifactId>naming-java</artifactId>
   <version>5.0.28</version>
</dependency>
-->

问题:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/naming/ContextBindings

类加载器环境不同,放在pom.xml中时加载不到运行时环境中。

解决方案:把naming-common的jar包从pom.xml中删除,放入lib文件夹下,add build path。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值