14

Tomcat に JAX-WS ベースの Web サービスをデプロイする際に、必要な構成を最小限に抑えようとしています。サーブレット 3.0 (Tomcat 7 以降でサポート) の導入により、破棄web.xmlすることができますが、まだありsun-jaxws.xmlます。このブログ投稿は興味深いものです。

もちろん、jax-ws アノテーションを使用することで、sun-jaxws.xml の構成をオプションにして完全に記述子をなくすこともできますが、それには、JSR-109 のようなデフォルトの url-pattern や、Jersey REST のようなカスタム パターンを指定する必要があります。 JAX-WS 仕様のサービス。

sun-jaxws.xmlTomcatで回避することは可能ですか?どうすればよいですか?

4

4 に答える 4

2

この方法で Web サービスを正常に公開しました。servletContextListener で公開するために apache cfx を使用しました。

@WebListener
public class WebServicePublisListener implements ServletContextListener {

    /**
     * Default constructor. 
     */
    public WebServicePublisListener() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent sce)  { 
        JaxWsServerFactoryBean srvFactory = new JaxWsServerFactoryBean();
        srvFactory.setServiceClass(RandService.class);
        srvFactory.setAddress("/RandService");
        srvFactory.setServiceBean(new RandServiceImplement());
        srvFactory.create();
    }
于 2015-06-03T11:51:17.770 に答える
1

Web サービスを公開する必要があります。ServletContextListener を実装して、エンドポイントを公開できます。

@javax.servlet.annotation.WebListener 
public class AppServletContextListener implements javax.servlet.ServletContextListener {

    public void contextInitialized(ServletContextEvent sce) { 
        Endpoint.publish("{protocol}://{host}:{port}/{context}/{wsName}", new MyHelloWorldWSImpl());
    } 

    public void contextDestroyed(ServletContextEvent sce) { 
        .... 
    }
}

sun-jaxws.xml は仕様上必須ではありません。たとえば、glassfish (metro) では省略可能です。また、EJB 3.1 を (jaxws を使用して) Web サービスとして公開すると、生成されたビルドに sun-jaxws.xml ファイルが表示されません。

于 2013-05-22T01:17:08.897 に答える