JAX-WS Spring統合の例

このリンクの中で言及しているように、SpringをJAX-WSに統合する方法を説明するガイドがあります:http://jax-ws-commons.java.net/spring/このチュートリアルを終了すると、単純なHelloWorld Webサービス(JAX-WS)を作成し、Springを介してBeanをWebサービスに追加します。

1.プロジェクトフォルダ

最終的なプロジェクトフォルダの構造を参照してください。

jaxws-spring-folder-structure、title = "jaxws-spring-folder-structure"、width = 353、height = 456

プロジェクトの依存関係

すべてのライブラリ依存関係を取得するには、Mavenを使用します。 JAX-WSとSpringを統合する鍵は、 jaxws-spring.jar です。

File:pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/maven-v4__0__0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mkyong</groupId>
  <artifactId>WebServicesExample</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>WebServicesExample Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <repositories>
    <repository>
      <id>java.net</id>
      <url>http://download.java.net/maven/2</url>
    </repository>
  </repositories>

  <dependencies>

        <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
        </dependency>

    <!-- Spring framework -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring</artifactId>
        <version>2.5.6</version>
    </dependency>

        <!-- JAX-WS -->
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-rt</artifactId>
            <version>2.2.3</version>
    </dependency>

    <!-- Library from java.net, integrate Spring with JAX-WS -->
    <dependency>
        <groupId>org.jvnet.jax-ws-commons.spring</groupId>
        <artifactId>jaxws-spring</artifactId>
        <version>1.8</version>
        <exclusions>
          <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
              </exclusion>
              <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
              </exclusion>
              <exclusion>
                <groupId>com.sun.xml.stream.buffer</groupId>
                <artifactId>streambuffer</artifactId>
              </exclusion>
              <exclusion>
                <groupId>org.jvnet.staxex</groupId>
                <artifactId>stax-ex</artifactId>
              </exclusion>
        </exclusions>
    </dependency>

  </dependencies>
  <build>
    <finalName>web services</finalName>
    <plugins>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>2.3.1</version>
           <configuration>
               <source>1.6</source>
               <target>1.6</target>
           </configuration>
       </plugin>
    </plugins>
  </build>
</project>

3. JAX-WS Hello World

単純なJAX-WSの例と、Springを介した依存性注入(DI)「HelloWorldBo」です。

File:HelloWorldWS.java

package com.mkyong.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;

import com.mkyong.bo.HelloWorldBo;

@WebService
public class HelloWorldWS{

   //DI via Spring
    HelloWorldBo helloWorldBo;

    @WebMethod(exclude=true)
    public void setHelloWorldBo(HelloWorldBo helloWorldBo) {
        this.helloWorldBo = helloWorldBo;
    }

    @WebMethod(operationName="getHelloWorld")
    public String getHelloWorld() {

        return helloWorldBo.getHelloWorld();

    }

}

4.ビーンズ

単純な文字列を返すための `getHelloWorld()`メソッドを持つHelloWorldBoクラスがあります。

File:HelloWorldBo.java

package com.mkyong.bo;

public interface HelloWorldBo{

    String getHelloWorld();

}

File:HelloWorldBoImpl.java

package com.mkyong.bo.impl;

import com.mkyong.bo.HelloWorldBo;

public class HelloWorldBoImpl implements HelloWorldBo{

    public String getHelloWorld(){
        return "JAX-WS + Spring!";
    }

}

5. Spring Beansの設定

Spring Beanの設定ファイルで、URLパターン " /hello "を " com.mkyong.ws.HelloWorldWS " Webサービスクラスにバインドします。

ファイル:applicationContext.xml

<?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:ws="http://jax-ws.dev.java.net/spring/core"
       xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://jax-ws.dev.java.net/spring/core
        http://jax-ws.dev.java.net/spring/core.xsd
        http://jax-ws.dev.java.net/spring/servlet
        http://jax-ws.dev.java.net/spring/servlet.xsd"
>

    <wss:binding url="/hello">
        <wss:service>
            <ws:service bean="#helloWs"/>
        </wss:service>
    </wss:binding>

    <!-- Web service methods -->
    <bean id="helloWs" class="com.mkyong.ws.HelloWorldWS">
        <property name="helloWorldBo" ref="HelloWorldBo"/>
    </bean>

    <bean id="HelloWorldBo" class="com.mkyong.bo.impl.HelloWorldBoImpl"/>

</beans>
  • 注意 このjaxws-spring統合メカニズムでは、 sun-jaxws.xml ** ファイルは必要なくなりました。

6. web.xml

web.xmlで "com.sun.xml.ws.transport.http.servlet.WSSpringServlet`"を宣言し、それを "/hello`にリンクします。

<web-app id="WebApp__ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app__2__4.xsd">

    <display-name>Spring + JAX-WS</display-name>

    <servlet>
                <servlet-name>jaxws-servlet</servlet-name>
               <servlet-class>
                      com.sun.xml.ws.transport.http.servlet.WSSpringServlet
                </servlet-class>
    </servlet>

    <servlet-mapping>
                <servlet-name>jaxws-servlet</servlet-name>
                <url-pattern>/hello</url-pattern>
         </servlet-mapping>

         <!-- Register Spring Listener -->
    <listener>
                <listener-class>
                 org.springframework.web.context.ContextLoaderListener
                </listener-class>
    </listener>

</web-app>

7.デモ

プロジェクトを開始し、展開されたWebサービスにURL " /hello "でアクセスします。たとえば、http://localhost:8080/WebServicesExample/hello?wsdl__

jaxws-spring-demo、title = "jaxws-spring-demo"、width = 639、height = 391

ダウンロードする - リンク://wp-content/uploads/2011/03/JAX-WS-Spring-Integration-Example.zip[JAX-WS-Spring-Integration-Example.zip](10KB)

リファレンス

  1. リンク://webservices/jax-ws/jax-ws-java-web-application-integration-example/[JAX-WS

Java Webアプリケーション統合の例]。 http://jax-ws-commons.java.net/spring/

リンク://タグ/統合/[統合]リンク://タグ/jax-ws/[jax-ws]リンク://タグ/スプリング/[スプリング]リンク://タグ/ウェブサービス/[ウェブサービス]