Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置JDBC数据源,以便在JSF2项目中与JNDI和Tomcat6一起使用_Java_Jsf 2_Jdbc_Tomcat6_Jndi - Fatal编程技术网

Java 配置JDBC数据源,以便在JSF2项目中与JNDI和Tomcat6一起使用

Java 配置JDBC数据源,以便在JSF2项目中与JNDI和Tomcat6一起使用,java,jsf-2,jdbc,tomcat6,jndi,Java,Jsf 2,Jdbc,Tomcat6,Jndi,我正在使用JSF2开发一个web应用程序,它将部署在Tomcat6中。我需要使用JNDI访问HSQLDB数据源。我不能修改Tomcat的server.xml文件,也不能修改任何其他“Tomcat文件”。我已经看过关于这方面的各种教程和解释,但都包括关于修改server.xml等的步骤,这在本例中是不允许的。我的问题是,这可以在不修改Tomcat文件的情况下完成吗(即,仅对META-INF和WEB-INF中的文件(如WEB.xml)以及要部署在.war文件中的其他文件进行更改?如果是,需要修改哪些

我正在使用JSF2开发一个web应用程序,它将部署在Tomcat6中。我需要使用JNDI访问HSQLDB数据源。我不能修改Tomcat的
server.xml
文件,也不能修改任何其他“Tomcat文件”。我已经看过关于这方面的各种教程和解释,但都包括关于修改
server.xml
等的步骤,这在本例中是不允许的。我的问题是,这可以在不修改Tomcat文件的情况下完成吗(即,仅对
META-INF
WEB-INF
中的文件(如
WEB.xml
)以及要部署在.war文件中的其他文件进行更改?如果是,需要修改哪些文件以及如何修改?这是我第一次通过JNDI设置对数据库的访问,响应越详细越好。谢谢。

请查看。)

在那里你可以看到,你只需要在META-INF中修改/创建项目
context.xml
,在web-INF中修改/创建项目
web.xml

在Tomcat中通过添加声明来配置JNDI数据源 您的资源与您的上下文相关联

  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/javatest"/>

现在为这个测试应用程序创建一个WEB-INF/WEB.xml

  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/TestDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

数据库连接
jdbc/TestDB
javax.sql.DataSource
容器

我建议你阅读,特别是:为链接提供上下文:一个指向潜在解决方案的链接总是受欢迎的,但是请在链接周围添加上下文,这样你的其他用户就会知道它是什么以及为什么存在。总是引用一个重要链接中最相关的部分,以防目标站点无法访问或永久关闭脱机。@反斜杠我希望它现在能满足要求!?这很有帮助。我已经将必要的文件/代码添加到我的项目中,并且(可能)已经已经成功了。我仍然需要做更多的测试。但是,我有一个后续问题。我使用了您发布的代码,并进行了更改,使其适合HSQLDB。当我试图通过
Context initialContext=new initialContext();
then
DataSource ds=(DataSource)initialContext.lookup(“jdbc/TestDB”)获取conn时;
我遇到一个异常,告诉我找不到名称。但是当我执行
查找(“java:comp/env/jdbc/TestDB”)
时,乍一看,它似乎找到了名称。为什么?正如apache howto中所述:“当以编程方式访问数据源时,请记住在JNDI查找之前添加java:/comp/env”。如果您想知道原因,我建议您进一步阅读howto以及有关上下文容器的页面。我一定错过了这一部分。我会再看一看。感谢您提供的链接和答案。