2

Spring 3 MVC Webアプリケーションがあり、Webサービスで拡張しようとしています。

私は今、JAX-WS Webサービスを試して、適切な場所でWebServiceとWebMethodに注釈を付けています。web.xmlにディスパッチャーがマップされています。これは標準のSpringDispatcherServletです。そして、その構成:dispatcher-servlet.xmlは、MVCのものに対して完全に正常に機能しています。

WebServicesを公開しようとすると、問題が発生します。これを行うには、dispatcher-servlet.xmlに次のBeanを追加します。

<bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter">
    <property name="baseAddress" value="http://localhost:8080/service/" />
</bean>

このBeanが追加された場合。その後、WebServicesは完全に機能しますが、MVCのものはすべて機能しなくなります。

したがって、2番目の試みは、2つのディスパッチャーを作成することでした。1つはmvc-dispatcherという名前で、もう1つはwebservice-dispatcherという名前です。それらのそれぞれは、それぞれ/mvcと/wsにマップされます。次に、SimpleJaxWsServiceExporterのみをwebservice-configに配置し、標準のMVCのもののみをもう一方に配置します。しかし、それでも同じ問題。Webサービスディスパッチャーを無効化/コメントアウトした場合にのみ、MVCを機能させることができます。

これはとても複雑なことになっているとは信じられません...私は何を得ていないのですか?

どんな助けでも大いに感謝されるでしょう。JAX-WSとSpring3MVCを実行する適切なチュートリアルが見つかりません...

前もって感謝します!

4

2 に答える 2

2

ディスパッチャーとは春のディスパッチャーを意味すると思いますが、それはお勧めしません。JAX-WSをそれ自体で別のサーブレットにするだけです。

https://cwiki.apache.org/GMOxDOC20/simple-web-service-with-jax-ws.html

次に、Spring Beanを注入できるようにする必要がある場合はSpringBeanAutowiringSupport、この例のように拡張します。

@WebServiceをSpringに対応させる方法

お役に立てれば!

于 2012-10-12T14:46:07.190 に答える
1

JAXWS仕様を実装するApacheCXFは、Springと非常によく統合されており、実際には、CXFはSpringの舞台裏で使用されます。

実際には、次のように進めることができます。

web.xmlで、cxfサーブレットを次のように構成しました

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">

....
    <servlet>
        <description>Apache CXF Endpoint</description>
        <display-name>cxf</display-name>
        <servlet-name>cxf</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>cxf</servlet-name>
        <url-pattern>/ws/*</url-pattern>
    </servlet-mapping>


</web-app>

ApacheCXF構成

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xmlns:jaxrs="http://cxf.apache.org/jaxrs"
       xmlns:soap="http://cxf.apache.org/bindings/soap"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                           http://cxf.apache.org/jaxws
                           http://cxf.apache.org/schemas/jaxws.xsd
                           http://cxf.apache.org/jaxrs
                           http://cxf.apache.org/schemas/jaxrs.xsd
                           http://cxf.apache.org/bindings/soap
                           http://cxf.apache.org/schemas/configuration/soap.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath*:META-INF/cxf/cxf-extension-*.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>

    <jaxws:endpoint
            id="yourService"
            implementor="#yourService"
            address="/yourAddres">
    </jaxrs:server>
</beans>

あなたの豆

 @Service
    @WebService(serviceName = "soapSvnClientService")
    public class SoapSvnClientService {

        @WebMethod(operationName = "service")
        public void service(@WebParam String param1,
                           @WebParam String param2){

    ....
    }

 }

これがお役に立てば幸いです

于 2016-03-23T22:44:17.923 に答える