【问题标题】:Not able to create a JNDI object in grails无法在 grails 中创建 JNDI 对象
【发布时间】: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&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;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

【问题讨论】:

    标签: tomcat grails


    【解决方案1】:

    这就是我们在Datasource.groovy中的做法

    dataSource {
    
       jndiName = "java:comp/env/jdbc/bonitaSequenceManagerDS"
    }
    

    【讨论】:

    • jndiName = "java:comp/env/jdbc/bonitaDS" 怎么样,并且 bonita 在测试环境中也可以工作。 resource.groovy 中的任何配置
    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 2014-01-02
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2011-11-13
    • 2015-03-19
    相关资源
    最近更新 更多