JAX-WS + Spring集成示例

本教程详细介绍了如何将Spring与JAX-WS整合,创建一个简单的HelloWorld Web服务。通过使用jaxws-spring.jar,实现了Spring Bean与JAX-WS的结合,无需sun-jaxws.xml文件。内容包括项目文件结构、依赖管理、JAX-WS示例、豆类定义、Spring Beans配置以及web.xml的设置,并提供了演示和相关参考资料。
摘要由CSDN通过智能技术生成

这是指导,向您展示如何将Spring与JAX-WS集成,如该链接中所述: http : //jax-ws-commons.java.net/spring/ 。 完成本教程后,您将创建一个简单的HelloWorld Web服务(JAX-WS),并通过Spring将bean放入Web服务中。

1.项目文件夹

请参阅最终项目文件夹结构。

jaxws-spring-folder-structure

2.项目依赖

使用Maven获取所有库依赖关系。 将Spring与JAX-WS集成的关键是通过jaxws-spring.jar

档案: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>

注意
jaxws-spring的pom.xml具有很多不必要的依赖关系,您可能需要通过</ exclusions>标记将其排除。

3. JAX-WS Hello World

一个简单的JAX-WS示例,以及通过Spring的依赖项注入(DI)“ HelloWorldBo”。

文件: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.豆类

这是HelloWorldBo类,带有getHelloWorld()方法以返回简单的字符串。

文件:HelloWorldBo.java

package com.mkyong.bo;

public interface HelloWorldBo{

	String getHelloWorld();
	
}

文件: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.演示

启动项目,并通过URL“ / hello ”访问已部署的Web服务,例如http:// localhost:8080 / WebServicesExample / hello?wsdl

jaxws-spring-demo

下载它– JAX-WS-Spring-Integration-Example.zip (10KB)

参考

  1. JAX-WS + Java Web应用程序集成示例
  2. http://jax-ws-commons.java.net/spring/
  3. http://weblogs.java.net/blog/kohsuke/archive/2007/01/spring_support.html

翻译自: https://mkyong.com/webservices/jax-ws/jax-ws-spring-integration-example/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值