<!-- Spring dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
<!-- JAX-WS -->
<dependency>
<groupId>org.jvnet.jax-ws-commons.spring</groupId>
<artifactId>jaxws-spring</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.8</version>
</dependency>
2 web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>SOAPWebServiceExample</display-name> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>customer</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>customer</servlet-name> <url-pattern>/customer</url-pattern> </servlet-mapping> </web-app>
3 customer.java
package com.jcombat.entity; public class Customer { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
4
package com.jcombat.services.customers; import com.jcombat.entity.Customer; public interface CustomerService { public Customer getCustomerById(String customerId); }
5
package com.jcombat.services.customers; import com.jcombat.entity.Customer; public class CustomerServiceImpl implements CustomerService { public Customer getCustomerById(String customerId) { Customer customer = new Customer(); customer.setId(123); customer.setName("Abhimanyu"); return customer; } }
6 endpoint:
package com.jcombat.ws; import javax.jws.WebMethod; import javax.jws.WebService; import com.jcombat.entity.Customer; import com.jcombat.services.customers.CustomerService; @WebService(serviceName = "customerService") public class CustomerEndpoint { private CustomerService service; @WebMethod(exclude = true) public void setService(CustomerService service) { this.service = service; } @WebMethod(operationName = "getCustomer") public Customer getCustomerById(String customerId) { Customer customer = service.getCustomerById(customerId); return customer; } }
7 配置文件:
<?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.java.net/spring/core.xsd http://jax-ws.dev.java.net/spring/servlet http://jax-ws.java.net/spring/servlet.xsd"> <bean id="customerService" class="com.jcombat.services.customers.CustomerServiceImpl"> </bean> <bean id="customerEndpoint" class="com.jcombat.ws.CustomerEndpoint"> <property name="service" ref="customerService" /> </bean> <wss:binding url="/customer"> <wss:service> <ws:service bean="#customerEndpoint" /> </wss:service> </wss:binding> </beans>