コンテクスト…xml-Metawerx Java Wiki

コンテキスト。xml

コンテキスト。xmlファイルは、単一のTomcat webアプリケーションの<Context>タグ(Context Fragment)を含むオプションのファイルです。 これは、アプリケーション、JNDIリソース、およびその他の設定の特定の動作を定義するために使用できます。

コンテキスト。Xmlファイルは、サーバーからコンテキスト設定を削除するためにTomcat5で導入されました。xmlファイル。

コンテキストフラグメントをサーバーに埋め込むことができます。XMLは<CATALINA>/confフォルダに配置されるか、contextというファイルのMETA-INFフォルダ内の各アプリケーション内に配置されます。xml。 これは、コンテキストへの変更がTomcatを再起動する必要がないことを意味するので、META-INFメソッドが推奨されます。 Webを変更してアプリケーションを再起動できます。自動リロードがアクティブな場合、またはTomcatマネージャで手動でリロードする場合のxml。

あなたのコンテキスト。xmlファイルは、META-INF/contextとして、アプリケーションのMETA-INFフォルダにインストールする必要があります。xml。 META-INFフォルダはWEB-INFと同じレベルに属します(内部ではありません)。

index.jsp/WEB-INF web.xml /lib myjar.jar /classes myclass.class/META-INF context.xml

驚くべきことに、このファイルは非常に便利ですが、まだアプリケーション内でこのファイルを使用する開発者は多くありません。 コンテキストの使用に切り替える。xmlファイルは、サーバーからすべての依存関係を削除します。xmlにより、アプリケーションの移植性が向上し、デプロイが容易になります。

コンテキストの例。xmlファイル

このファイルは、MySQLデータソースを表すJNDIリソースとセキュリティ-レルムを提供します。

<?xml version="1.0" encoding="UTF-8"?><Context> <!-- Specify a JDBC datasource --> <Resource name="jdbc/mydatabase" auth="Container" type="javax.sql.DataSource" username="YOUR_USERNAME" password="YOUR_PASSWORD" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://mysql.metawerx.net:3306/YOUR_DATABASE_NAME?autoReconnect=true" validationQuery="select 1" maxActive="10" maxIdle="4"/> <!-- Specify the security realm and location of the users file <Realm className="org.apache.catalina.realm.MemoryRealm" pathname="/tomcat/webapps/ROOT/WEB-INF/users.xml" /> --></Context>

上記の例のデータソースへのアクセス

上記の例のデータソースには、次の行を使用してjavaコードでアクセスできます:

// Get DataSourceContext ctx = new InitialContext();DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mydatabase");// Get Connection and StatementConnection c = ds.getConnection();Statement s = c.createStatement();

追加のデータベースは、コンテキストに追加の<Resource>要素を追加することによって追加できます。別の名前(例:jdbc/customerDatabase)を持つxmlファイル。

上記の例のセキュリティレルムにアクセスする

上記の例のセキュリティレルムには、webでさらに設定する必要があります。xml。 詳細については、”コンテナ管理セキュリティを使用したサイトのセキュリティ保護”を参照してください。

ノート

  • いくつかの例は、<コンテキスト>タグ内のパスとdocBase属性を示しています。 これらは、コンテキストタグがサーバー内にある場合に必要です。xmlですが、文脈では。xmlこれらはオプションであり、多くの場合、配置の問題を引き起こします(例:アプリケーションが別の名前で配置されている場合)。 コンテキスト名を自動化して、それらを省略する方が簡単です(そしてより良い)。 この場合、上記の例のように、属性なしで<Context>を使用してください。
  • すべてのコンテキストのデフォルト設定はコンテキストで定義されます。xml。<CATALINA>/confフォルダ内のデフォルトファイル

Gotchas/Troubleshooting/Debugging JNDI DataSource issues

  • jndiの問題はデバッグ出力がないためデバッグが難しいため、問題がある場合は、このリスト
  • をJNDIデータソースで確認してください。<CATALINA/common/libにJDBCドライバを含めるか、
  • をロードしないようにしてください。jndiデータソースが動作しない場合は、接続の詳細が正しいことを確認してください。別の方法を接続することによって(例えば:
  • deployXMLは、serverの<Host>エントリでfalse(デフォルト)に設定する必要があります。xml、またはコンテキスト。xmlファイルは無視されます
  • Tomcat5.5とTomcat6コンテキストをコピーします。最初のデプロイが成功した後、xmlファイルを<CATALINA>/conf/Standaloneに移動し、アプリケーションがデプロイされていない限り、ファイルを削除または更新しないでくださ あなたの文脈を変更した場合。xmlファイルがまだ動作しないか、変更が無視された場合は、<CATALINA>/conf/Standaloneフォルダ内のファイルを削除して、正しく再デプロイされていることを確認します。 Tomcat7では、copyXMLがfalse(デフォルトはtrue)に設定されていない限り、この問題は発生しません。 Metawerxでホストされているサイトは、私たちのカスタム設定のためにどのバージョンでもこの問題はありません。

また、

  • webも参照してください。xmlリファレンスガイド
  • Tomcat6コンテキスト。xmlドキュメント
  • <web内のenv-entry>タグ。これは、単純なテキスト値
  • Jndi DBCP Example for MySQL4を指定する場合に使用できます。X
  • MySQL5のJNDI DBCPの例。x
  • SQL Server7および2000のJNDI DBCP例
  • SQL Server2005のJNDI DBCP例
  • PostGreSQLのJndi DBCP例
  • FireBirdのJndi DBCP例
  • OracleのJndi DBCP例
  • Jndi DBCP例
  • Jndi DBCP例
  • Jndi DBCP例
  • Jndi DBCP例
  • Jndi DBCP例
  • Jndi DBCP例
  • Jndi DBCP例jspからjstlを使用したデータソース
  • javaからjndiデータソースにアクセスする
  • コンテナ管理セキュリティでサイトをセキュリティで保護する

Leave a Reply