HelloWorld 善战者,求之于势,不责于人;故能择人而任势。

知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。物有本末,事有终始。知所先后,则近道矣。

  BlogJava :: 首页 ::  :: 联系 ::  :: 管理 ::
  167 随笔 :: 1 文章 :: 40 评论 :: 0 Trackbacks

Here’s a guide to show you how to integrate Spring with JAX-WS, as mention in this link : http://jax-ws-commons.java.net/spring/. Upon finishing this tutorial, you will create a simple HelloWorld web service (JAX-WS), and DI a bean into the web service via Spring.

1. Project Folder

See the final project folder structure.

jaxws-spring-folder-structure

2. Project Dependencies

Use Maven to get all the library dependencies. The key to integrate Spring with JAX-WS is via 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>
Note
The jaxws-spring’s pom.xml has a lot of unnecessary dependencies, you may need to exclude it via </exclusions> tag.

3. JAX-WS Hello World

A simple JAX-WS example, and dependency inject (DI) “HelloWorldBo” via Spring.

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. Beans

Here’s the HelloWorldBo class, with a getHelloWorld() method to return a simple string.

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 Configuration

Spring beans configuration file to bind URL pattern “/hello” to “com.mkyong.ws.HelloWorldWS” web service class.

File : 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>
Note
With this jaxws-spring integration mechanism, the sun-jaxws.xml file is no longer required.

6. web.xml

In web.xml, declares “com.sun.xml.ws.transport.http.servlet.WSSpringServlet“, and link it to “/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. Demo

Start the project, and access the deployed web service via URL “/hello“, for example http://localhost:8080/WebServicesExample/hello?wsdl

jaxws-spring-demo


</script>

posted on 2011-10-10 17:14 helloworld2008 阅读(3287) 评论(1)  编辑  收藏 所属分类: java

评论

# re: JAX-WS + Spring integration example (轉自http://www.mkyong.com/webservices/jax-ws/jax-ws-spring-integration-example/)[未登录] 2013-08-05 15:05 test
下次复制粘贴的时候麻烦把格式调一下。。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: