2013-07-05 43 views
1

我正在使用将部署在Tomcat 6中的JSF 2的Web应用程序。我需要使用JNDI访问HSQLDB数据源。我无法修改Tomcat的server.xml文件,也无法修改任何其他“Tomcat文件”。我已经看到了关于这个的各种教程和解释,但都包括有关修改server.xml等的步骤,在这种情况下这是不允许的。我的问题是,这可以在不修改Tomcat文件的情况下完成(即仅对META-INFWEB-INF(如web.xml)中的文件进行更改,并将其他文件部署到.war文件中)如果是,需要修改哪些文件以及你能怎么样?这是我第一次访问通过JNDI,更详细的回应,就更好了。由于建立一个数据库。在JSF 2项目中配置用于JNDI和Tomcat 6的JDBC数据源

回答

2

看一看Apache Tomcat JNDI How-To

有阅读,你只是需要修改/创建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> 
+0

我建议你阅读[如何应答(http://stackoverflow.com/questions/how-to-answer),具体为:**提供连结方面:** _一个可能的解决方案的链接总是受欢迎的,但请在链接上添加上下文,以便您的同行用户可以了解它是什么以及它为什么在那里。请始终引用重要链接中最相关的部分,以防目标网站无法访问或永久离线._ – BackSlash

+0

@BackSlash我希望它现在符合要求!? – t7bdh3hdhb

+0

这有助于。我已经将必要的文件/代码添加到我的项目中,并且(可能)已经成功。我仍然需要做更多的测试。但是,我有一个后续问题。我使用了您发布的代码,并进行了更改以使其适用于HSQLDB。当我试图通过'Context initialContext = new InitialContext();'然后'DataSource ds =(DataSource)initialContext.lookup(“jdbc/TestDB”)获得一个conn时;'我得到一个NamingException,告诉我名称不是找到。但是当我第一眼看'.lookup(“java:comp/env/jdbc/TestDB”)时,它看起来会找到名字。为什么? – neizan