JBoss 7.1上的GateIn portlet中的JNDI数据源

时间:2012-05-23 09:50:43

标签: jboss jndi gatein

我正在尝试在JBoss 7.1上的GateIn 3.2.0中部署的portlet中获取数据源。

首先,我在standalone.xml中创建了数据源

            <datasource jta="true" jndi-name="java:jboss/datasources/ccr" pool-name="ccr-pool" enabled="true" use-java-context="false" use-ccm="true">
                <connection-url>jdbc:mysql://localhost:42006/contentrepository</connection-url>
                <driver>com.mysql</driver>
                <security>
                    <user-name>node</user-name>
                </security>
                <statement>
                    <prepared-statement-cache-size>100</prepared-statement-cache-size>
                    <share-prepared-statements>true</share-prepared-statements>
                </statement>
            </datasource>

我还为驱动程序添加了驱动程序和模块。

在我的portlet中,我正在尝试使用

访问数据源
dataSource = (DataSource) new InitialContext().lookup("java:jboss/datasources/ccr");

但我只得到一个javax.naming.NameNotFoundException:名字'jboss'在上下文''中找不到。

我也尝试用

获取它
dataSource = (DataSource) new InitialContext().lookup("java:comp/env/datasources/ccr");

并使用web.xml和jboss-web.xml

中的以下条目对其进行映射

的web.xml:

<resource-ref>
    <description>MySQL DS</description>
    <res-ref-name>datasources/ccr</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

的JBoss-web.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <resource-ref>
        <res-ref-name>datasources/ccr</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <jndi-name>java:jboss/datasources/ccr</jndi-name>
    </resource-ref>
</jboss-web>

然后我得到了javax.naming.NameNotFoundException:在上下文''中找不到名称'comp'。

我错过了什么?是否有一些安全设置阻止我的应用程序获取数据源?

奇怪的是,我可以在使用servlet时在同一个web应用程序中获取数据源,但仅在doGet / doPost方法中而不是在init()中。

1 个答案:

答案 0 :(得分:0)

我在GateIn 3.3上遇到了同样的问题。但它没有与GateIn 3.4M1一起复制。当我谷歌这个错误时,我在JIRA中找到了它:https://issues.jboss.org/browse/GTNPORTAL-2511