はじめに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
ますよね?