如何在Tomcat 7下的Axis2中配置JNDI上下文?(使用myBatis的JAX-WS Web服务)

时间:2013-08-06 12:29:39

标签: tomcat axis2 jndi mybatis

我实现了一个在Tomcat 7下运行在Axis2(Jax-WS)上的Java Web服务。 要从postgreSQL获取数据,此Web服务使用mybatis框架。 如果我在mybatis-config.xml中手动设置连接参数,则一切正常 我想使用JNDI数据源直接通过服务器上下文获取它们。

在myBatis-config.xml中,我添加了以下标记(在环境标记内):

<dataSource type="JNDI">
    <property name="data_source" value="java:comp/env/jdbc/myWebService" />
</dataSource>

在互联网上搜索我也明白我必须使用以下标签创建一个Tomcat(或Axis2?)上下文:

<Resource name="jdbc/myWebService" auth="Container" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/myDB" username="user" password="password" maxActive="20" maxIdle="10" maxWait="-1"/>

<resource-ref>
    <description>ConnectionToPostgreSQL</description>
    <res-ref-name>jdbc/myWebService</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

但我不知道在哪里(在哪个xml文件中)我必须放置它们以及是否需要其他任何东西。

1 个答案:

答案 0 :(得分:0)

Resource定义可以在[your webapp name]/META-INF/context.xml文件中定义,例如:

<?xml version='1.0' encoding='utf-8'?>
<Context path="/[your webapp context]" privileged="true">
    <Resource name="jdbc/myWebService" auth="Container" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/myDB" username="user" password="password" maxActive="20" maxIdle="10" maxWait="-1"/>
</Context>

还有其他选项 - 例如在server.xml或共享context中定义它。请参阅JNDI Resources HOW-TO

resource-ref进入[your webapp name]/WEB-INF/web.xml