Maven tomcat:run 通过 JNDI 插件和数据源配置
Maven tomcat:run plugin and datasource configuration via JNDI
我正在尝试使用 Spring JndiObjectFactoryBean 配置 DB 数据源,因此,我有 tomcat:run 用于本地测试目的的插件和位于 src/test/resources/maven-tomcat-plugin/ 中的 context.xml 文件
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<contextFile>${basedir}/src/test/resources/maven-tomcat-plugin/context.xml</contextFile>
</configuration>
</plugin>
Context.xml
<?xml version='1.0' encoding='utf-8'?>
<Context>
<ResourceLink name="jdbc/MyLocalDB" global="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" />
<Resource name="jdbc/MyDB" global="jdbc/MyDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc" username="" password="" maxActive="100" maxIdle="20" minIdle="5"
maxWait="10000" />
</Context>
但我有:名称 [jdbc/TestDB] 未绑定在此上下文中
contextPath 似乎什么也没给出。
有没有大神知道怎么解决的?
<ResourceLink>
元素旨在构建 link 到 Global 资源,该资源应在您的 server.xml
文件下声明,并且可能如下所示:
<GlobalNamingResources>
<Resource name="jdbc/DatabaseName" auth="Container" type="javax.sql.DataSource"
username="dbUsername" password="dbPasswd"
url="jdbc:postgresql://localhost/dbname"
driverClassName="org.postgresql.Driver"
initialSize="5" maxWait="5000"
maxActive="120" maxIdle="5"
validationQuery="select 1"
poolPreparedStatements="true"/>
</GlobalNamingResources/>
请注意,name
属性必须与 ResourceLink 元素的 global
属性匹配。
因此要么声明匹配的全局资源,要么只删除资源 Link 并像您一样使用声明的资源。
你可以试试下面的配置(不要忘记添加依赖项):
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>9090</port>
<path>/myapp</path>
<contextFile>${basedir}/tomcat7-maven-plugin/context.xml</contextFile>
</configuration>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
</dependencies>
</plugin>
和 context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context debug="true" reloadable="true" crossContext="true"
antiJARLocking="true">
<Resource name="jdbc/myDS" auth="Container"
type="javax.sql.DataSource" maxActive="100" maxIdle="30"
maxWait="10000" validationQuery="select sysdate from dual"
username="userdb" password="pass123"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@server:1521:sid" />
</Context>
有关更多信息,您可以查看 Apache Tomcat 网页 https://tomcat.apache.org/maven-plugin-2.2/tomcat7-maven-plugin/run-mojo.html
我正在尝试使用 Spring JndiObjectFactoryBean 配置 DB 数据源,因此,我有 tomcat:run 用于本地测试目的的插件和位于 src/test/resources/maven-tomcat-plugin/ 中的 context.xml 文件
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<contextFile>${basedir}/src/test/resources/maven-tomcat-plugin/context.xml</contextFile>
</configuration>
</plugin>
Context.xml
<?xml version='1.0' encoding='utf-8'?>
<Context>
<ResourceLink name="jdbc/MyLocalDB" global="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" />
<Resource name="jdbc/MyDB" global="jdbc/MyDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc" username="" password="" maxActive="100" maxIdle="20" minIdle="5"
maxWait="10000" />
</Context>
但我有:名称 [jdbc/TestDB] 未绑定在此上下文中
contextPath 似乎什么也没给出。
有没有大神知道怎么解决的?
<ResourceLink>
元素旨在构建 link 到 Global 资源,该资源应在您的 server.xml
文件下声明,并且可能如下所示:
<GlobalNamingResources>
<Resource name="jdbc/DatabaseName" auth="Container" type="javax.sql.DataSource"
username="dbUsername" password="dbPasswd"
url="jdbc:postgresql://localhost/dbname"
driverClassName="org.postgresql.Driver"
initialSize="5" maxWait="5000"
maxActive="120" maxIdle="5"
validationQuery="select 1"
poolPreparedStatements="true"/>
</GlobalNamingResources/>
请注意,name
属性必须与 ResourceLink 元素的 global
属性匹配。
因此要么声明匹配的全局资源,要么只删除资源 Link 并像您一样使用声明的资源。
你可以试试下面的配置(不要忘记添加依赖项):
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>9090</port>
<path>/myapp</path>
<contextFile>${basedir}/tomcat7-maven-plugin/context.xml</contextFile>
</configuration>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
</dependencies>
</plugin>
和 context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context debug="true" reloadable="true" crossContext="true"
antiJARLocking="true">
<Resource name="jdbc/myDS" auth="Container"
type="javax.sql.DataSource" maxActive="100" maxIdle="30"
maxWait="10000" validationQuery="select sysdate from dual"
username="userdb" password="pass123"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@server:1521:sid" />
</Context>
有关更多信息,您可以查看 Apache Tomcat 网页 https://tomcat.apache.org/maven-plugin-2.2/tomcat7-maven-plugin/run-mojo.html