简体   繁体   English

不使用web.xml时如何将JDBC数据源绑定到JNDI上下文“ java:comp / env / jdbc”

[英]How to bind a JDBC datasource to JNDI context “java:comp/env/jdbc” when not to use web.xml

How to bind a JDBC datasource to JNDI context java:comp/env/jdbc only using code-based approach. 如何仅使用基于代码的方法将JDBC数据源绑定到JNDI上下文java:comp/env/jdbc

We need to write resource-ref in the web.xml for binding a dataSource to JNDI local context java:comp/env/jdbc . 我们需要在web.xml编写resource-ref ,以将数据resource-ref绑定到JNDI本地上下文java:comp/env/jdbc But I want to use only org.springframework.web.context.AbstractContextLoaderInitializer instead of web.xml (the old approach). 但是我只想使用org.springframework.web.context.AbstractContextLoaderInitializer而不是web.xml (旧方法)。

We know the method InitialContext#createSubcontext . 我们知道方法InitialContext#createSubcontext But some application servers(eg Websphere) do not accept to edit the context java:comp/env/jdbc/ . 但是某些应用程序服务器(例如Websphere)不接受编辑上下文java:comp/env/jdbc/

Any solutions? 有什么办法吗?

Versions: 版本:

  • Spring 4.0.7 春季4.0.7
  • Servlet 3.0 Servlet 3.0

You could try a full programmatic approach using Spring's SimpleNamingContextBuilder: 您可以尝试使用Spring的SimpleNamingContextBuilder的完整编程方法:

  SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
  DataSource ds = new DriverManagerDataSource(...);
  builder.bind("java:comp/env/jdbc/myds", ds); // you control the datasource
  builder.activate();

It's mainly there for test-purposes. 它主要用于测试目的。 If you choose to use it then you need to provide your own connection pool (eg Apache's Jakarta Commons DBCP). 如果选择使用它,则需要提供自己的连接池(例如Apache的Jakarta Commons DBCP)。

I once used for testing when I deployed to cloudbees. 部署到cloudbees时,我曾经进行过测试。 see this blogpost 看到这个博客文章

This works in "plain" Tomcat. 这适用于“普通” Tomcat。 I don't have a EE server to test with, but you could try it and see what happens (I guess the JNDI binding name has to be unique to the server though). 我没有要测试的EE服务器,但是您可以尝试一下,然后看看会发生什么(尽管我猜JNDI绑定名称对于服务器必须是唯一的)。

What is your application server? 您的应用服务器是什么?

See if this helps. 看看是否有帮助。

How to use JNDI DataSource provided by Tomcat in Spring? 春季如何使用Tomcat提供的JNDI数据源?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 glassfish-4 + spring jndi名称java:comp / env / jdbc / - glassfish-4 + spring jndi name java:comp/env/jdbc/ 服务器无法找到java:comp / env / jdbc / my_db数据源…在上下文“ java:”中找不到名称comp / env / jdbc - The server cannot locate the java:comp/env/jdbc/my_db data source … Name comp/env/jdbc not found in context “java:” 访问不带java:comp / env前缀的JNDI DataSource - Accessing a JNDI DataSource without the java:comp/env prefix 根异常是 javax.naming.NameNotFoundException: Name jdbc not found in context "java:comp/env" - Root exception is javax.naming.NameNotFoundException: Name jdbc not found in context "java:comp/env" 码头:如何声明JVM作用域的jndi条目并绑定到java:comp / env - jetty: how to declare JVM scoped jndi entries and bind to java:comp/env Spring应用程序侦听器-ContextRefreshedEvent java:comp / env / jdbc / db未找到 - Spring Application Listener - ContextRefreshedEvent java:comp/env/jdbc/db not found 如何通过硬编码在web.xml中使用jndi设置? - how use jndi settings in web.xml via hard coding? 如何在 Glassfish 4.1 中设置 java:comp/env/foo JNDI 变量? - How to set a java:comp/env/foo JNDI variable in Glassfish 4.1? Tomcat:jndi资源的context.xml和web.xml配置 - Tomcat: context.xml and web.xml configs for jndi resource 获取java.lang.ClassNotFoundException:Java中的java:comp / env / jdbc / oracleInstance? - Getting java.lang.ClassNotFoundException: java:comp/env/jdbc/oracleInstance in java?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM