0

はじめにJAX -WS を使用して Web サービスを作成し、それを Tomcat にデプロイしています。多くの困難を経て、ようやくコードを書くことができました。

問題残念ながら、実行しようとすると次のエラーが発生します。

Context is read only

設定複数のデータベースにクエリを実行し、単一の結果を返す Web サービスを作成しています。その目的のために、init()メソッド ( でマーク) で、コンテキストに追加する@PostConstruct一連の を作成します。DataSources

これは、プールを作成する方法です(Tomcatのドキュメントに基づいて)。作成後、コンテキストに追加します(このチュートリアルに基づいて):

@PostConstruct
private void init(){
  PoolProperties props = new PoolProperties();
  props.setUrl("jdbc:postgresql://" + ...);
  props.setUsername(...);
  props.setPassword(...);
  props.setJdbcInterceptors("org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" +
    "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");

  DataSource dataSource = new DataSource();
  dataSource.setPoolProperties(propos);

  Context ctx = new InitialContext(env);
  ctx.bind("java:/comp/env/dbpool", dataSource);
}

そして後で私はそれを使用します:

@WebMethod
public Result performQuery(QueryParameters params){
  Context ctx = new InitialContext(env);
  (DataSource) source = (DataSource) ctx.lookup("java:/comp/env/dbpool");
}

Tomcat 7 サーバーに Web サービスをデプロイします。

質問Google-ing の後で、Tomcat の Context に書き込めないことを理解しました。しかし、他にどうすればこれを解決できますか? JAX-WSについて私が理解していることから、プライベート変数に を保持させることはできませんDataSourceよね?DataSourceを使用してそれを渡す必要がありContextますよね?

4

1 に答える 1

1

InitialContextクライアント コードからではなく、Tomcat コードからのみ書き込み可能です。yourを your に追加する必要があります。DataSourcecontext.xml

于 2013-06-10T09:01:01.660 に答える