【发布时间】:2016-05-19 10:28:39
【问题描述】:
如何在 grails 中进行查找? jndi 查找应该足够简单,但我发现有关 context.xml 的信息令人困惑,在 Config.xml 中添加“grails.naming.entries”,在 resources.groovy 中创建 jndi-lookup bean - 我尝试过的所有组合到目前为止一直没有结果。如果我们在 tomcat 的 context.xml 中给出它,它就可以获取 JNDI。因此,如果我在 tomcat 中部署战争,我不会得到任何异常。
我的 config.groovy
grails.naming.entries = [
"java:comp/env/bonitaDS": [
type: 'javax.sql.DataSource',
auth: 'Container',
description: 'Main datasource',
url: "jdbc:mysql://localhost/bonita?useUnicode=yes&characterEncoding=UTF-8",
username: "",
password: "",
driverClassName: "com.mysql.jdbc.Driver",//"com.mysql.jdbc.jdbc2.optional.MysqlXADataSource",
maxActive: "8",
maxIdle: "4"
],
"java:comp/env/bonitaSequenceManagerDS": [
type: 'javax.sql.DataSource',
auth: 'Container',
description: 'Main datasource',
url: 'jdbc:mysql://localhost/bonita?useUnicode=yes&characterEncoding=UTF-8',
username: "root",
password: "root",
driverClassName: 'com.mysql.jdbc.Driver',
maxConnectionsPerPartition: "2",
minConnectionsPerPartition: "1",
partitionCount: "1",
acquireIncrement: "5",
statementsCacheSize: "100",
releaseHelperThreads: "3"
],
"java:comp/UserTransaction": [
type: 'com.atomikos.icatch.jta.UserTransactionFactory'
]
]
我在tomcat的conf文件夹中的context.xml文件
<Resource name="bonitaSequenceManagerDS"
auth="Container"
type="javax.sql.DataSource"
maxActive="17"
minIdle="5"
maxWait="10000"
initialSize="3"
maxPoolSize="15"
minPoolSize="3"
maxConnectionAge="0"
maxIdleTime="1800"
maxIdleTimeExcessConnections="120"
idleConnectionTestPeriod="30"
acquireIncrement="3"
validationQuery="SELECT 1"
validationInterval="30000"
testConnectionOnCheckout="true"
removeAbandoned="true"
logAbandoned="true"
username=""
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/bonita?dontTrackOpenResources=true&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"/>
<Resource name="bonitaDS"
auth="Container"
type="javax.sql.DataSource"
factory="bitronix.tm.resource.ResourceObjectFactory"
uniqueName="jdbc/bonitaDSXA" />
错误:
org.springframework.beans.factory.BeanCreationException: 错误 创建文件中定义的名称为“transactionManager”的bean [C:\bonita-home\server\platform\conf\services\cfg-bonita-transaction-api-impl.xml]: 调用 init 方法失败;嵌套异常是 javax.naming.NameNotFou ion:名称 [java:comp/UserTransaction] 不是 边界; 2个绑定: [java:comp/env/bonitaDS,java:comp/env/bonitaSequenceManagerDS](使用 --stacktrace 查看完整的跟踪信息)
运行测试应用程序时出现以下启动异常 使用 run-app 时在运行时获得相同的异常 Grails 2.4.2
【问题讨论】: