より具体的には、すべての依存関係を含む実行可能な war を取得しました。アプリケーションは、jndi データソースを使用して実行するチャームのように、jndi データソースなしで起動しますが、失敗しました。このような構成には jetty.xml の場所がないと信じているため、jetty はデフォルトでそれを読み取らないため、jetty-env.xml も使用できません。jndi データソース構成に jetty-web.xml を使用しようとしましたが、jetty はアプリケーションのデプロイに失敗し、503 エラー コードを返します。Jetty9-M4 を使用しています。Tomcat プーリングと BoneCP の両方を試みましたが、結果は同じでした。
スタータークラス:
import java.net.URL;
import java.security.ProtectionDomain;
import org.eclipse.jetty.server.*;
import org.eclipse.jetty.webapp.WebAppContext;
public final class Loader {
public static void main(String[] args) throws Exception
{
String jetty_home = "..";
int appli_port = 8080;
Server server = new Server(appli_port);
ProtectionDomain protectionDomain = Loader.class.getProtectionDomain();
URL location = protectionDomain.getCodeSource().getLocation();
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar(location.toExternalForm());
server.setHandler(webapp);
server.start();
server.join();
}
}
jetty-web.xml:
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<New id="testDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg></Arg>
<Arg>jdbc/testDS</Arg>
<Arg>
<New class="com.jolbox.bonecp.BoneCPDataSource">
<Set name="driverClass">org.postgresql.Driver</Set>
<Set name="jdbcUrl">jdbc:postgresql://localhost:5432/testDS</Set>
<Set name="username">name</Set>
<Set name="password">password</Set>
<Set name="minConnectionsPerPartition">5</Set>
<Set name="maxConnectionsPerPartition">50</Set>
<Set name="acquireIncrement">5</Set>
<Set name="idleConnectionTestPeriod">30</Set>
</New>
</Arg>
</New>
</Configure>
jetty-web フェーズの jndi が遅すぎるか、構成が間違っていると思われます。
下手な英語でごめんなさい。
Hibernate を ORM として使用していることを忘れていました。
web.xml には以下が含まれます。
<resource-ref>
<description>Postgres datasource</description>
<res-ref-name>jdbc/testDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Hibernate.cfg.xml には次のものが含まれます
<property name="hibernate.connection.datasource">java:comp/env/jdbc/testDS</property>
試みた
<property name="hibernate.connection.datasource">jdbc/testDS</property>
どちらも機能していません。
jetty-web.xml
戦争に配置された小さな補足事項として、WEB-INF
JNDIリソース構成には問題がなく、デフォルトで使用されます。