組み込みの tomcat 7.0 で JAX-WS を動作させようとしています。
標準のTomcatについて話しているいくつかのチュートリアル(例:http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/)に従いましたが、できませんでしたTomcat 組み込み専用のものを見つけてください。
サーバー上で独自のサーブレットを実行することに成功しましたが、すべての JAX-WS アノテーションを含むクラスで起動しようとすると (および残りのすべて: web.xml の WSServletContextListener + WSServlet、WEB-INF の sun-jaxws.xml) 、次のエラーが発生しました:
INFO: Initializing ProtocolHandler ["http-bio-80"]
2 oct. 2012 14:48:20 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Tomcat
2 oct. 2012 14:48:20 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.27
2 oct. 2012 14:48:21 org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment
INFO: No global web.xml found
2 oct. 2012 14:48:28 com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextInitialized
INFO: WSSERVLET12 : initialisation du processus découte de contexte JAX-WS
2 oct. 2012 14:48:28 com.sun.xml.ws.transport.http.servlet.WSServletContextListener parseAdaptersAndCreateDelegate
SEVERE: WSSERVLET11 : fail analyzing descriptor : javax.xml.ws.WebServiceException: execution descriptor "/WEB-INF/sun-jaxws.xml" is missing
javax.xml.ws.WebServiceException: Le descripteur d'exécution "/WEB-INF/sun-jaxws.xml" is missing
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:125)
at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:152)
パスの問題のように見えますが、同じフォルダー WEB-INF フォルダー内の web.xml が正しく読み込まれているため、何が欠けているのかわかりません... これが私のアプリケーションのスタートアップ コードです:
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir(".");
tomcat.setPort(80);
tomcat.getHost().setAppBase("src/main/webapp");
Context context = tomcat.addWebapp("/Test", ".");
File configFile = new File(tomcat.getHost().getAppBase() + "/META-INF/context.xml");
context.setConfigFile(configFile.toURI().toURL());
tomcat.enableNaming();
StandardServer server = (StandardServer)tomcat.getServer();
AprLifecycleListener listener = new AprLifecycleListener();
server.addLifecycleListener(listener);
tomcat.start();
tomcat.getServer().await();
} catch (Exception e) {
e.printStackTrace();
}
助けや提案をありがとう...