3

Maven Jetty プラグインの呼び出しから使用できる JNDI データ ソースを構成しようとしています。これを WAR ファイルの外部で実行しようとしています。これにより、後で Jetty を使用して webapp をデプロイする可能性のある人が、WAR の WEB-INF ディレクトリ内の構成ファイルを編集する必要がなくなります。次のように jetty.xml ファイルを作成しました。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
 <!-- Atomikos XA aware (but not XA capable) JDBC data source -->
 <New id="sbeDataSource" class="org.mortbay.jetty.plus.naming.Resource">
  <Arg>jdbc/myDataSource</Arg>
  <Arg>
   <New class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean">
    .......
   </New>
  </Arg>
 </New> 
</Configure>

次に、次のように Maven プラグイン内からこのファイルを参照しました。

 <plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>maven-jetty-plugin</artifactId>
  <configuration>
   <jettyConfig>config/jetty.xml</jettyConfig>
  </configuration>
 </plugin>

ただし、mvn jetty:run-war を介して webapp を実行しようとすると、次のエラーが発生します。

Embedded error: 
Object is not of type class org.mortbay.jetty.webapp.WebAppContext

最上位の<Configure>要素を省略して、新しい JNDI リソースを直接作成しようとすると、次のようになります。

<New id="sbeDataSource" class="org.mortbay.jetty.plus.naming.Resource">

次に、同様のエラーが発生します。

Embedded error:
Object is not of type class org.mortbay.jetty.plus.naming.Resource

何を与える?

4

2 に答える 2

3

documentationによると、で宣言された名前付けエントリは、jvmまたはServerスコープjetty.xmlであると想定されています。

ご覧のとおり、各スコープの命名エントリを宣言する最も自然な構成ファイルは次のとおりです。

  • jetty.xml - jvm またはサーバー スコープ
  • WEB-INF/jetty-env.xml またはコンテキスト xml ファイル - webapp スコープ

したがって、jetty.xml次のようなものが含まれている必要があります。

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure id="Server" class="org.mortbay.jetty.Server">
 <!-- Atomikos XA aware (but not XA capable) JDBC data source -->
 <New id="sbeDataSource" class="org.mortbay.jetty.plus.naming.Resource">
  <Arg>jdbc/myDataSource</Arg>
  <Arg>
   <New class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean">
    .......
   </New>
  </Arg>
 </New> 
</Configure>
于 2010-10-13T17:55:16.620 に答える
2

Pascal Thivent の回答に加えて、実際jetty.xmljetty-env.xml<jettyEnvXml>

<plugin> 
  <groupId>org.mortbay.jetty</groupId> 
  <artifactId>maven-jetty-plugin</artifactId> 
  <configuration> 
   <jettyEnvXml>config/jetty.xml</jettyEnvXml> 
  </configuration> 
</plugin>
于 2010-10-13T18:00:57.687 に答える