JBoss 7.1 の GateIn 3.2.0 にデプロイしたポートレットでデータソースを取得しようとしています。
最初に、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>
ドライバーとドライバー用のモジュールも追加しました。
ポートレットで、次を使用してデータソースにアクセスしようとしています
dataSource = (DataSource) new InitialContext().lookup("java:jboss/datasources/ccr");
しかし、私は javax.naming.NameNotFoundException: Name 'jboss' not found in context '' しか取得していません。
私もそれを取得しようとしました
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' がコンテキスト '' に見つかりませんでした。
私は何が欠けていますか?アプリケーションがデータソースを取得できないようにするセキュリティ設定はありますか?
奇妙なことに、サーブレットを使用している場合、同じ Web アプリケーションでデータソースを取得できましたが、init() ではなく doGet/doPost メソッドでのみ取得できました。