带有JAX-WS和Spring的Web服务应用程序

1.简介

这是一个漫长的等待,但是我终于发布了一个关于使用Spring创建第一个基于SOAP的Web服务应用程序的教程。 JAX-WS (用于XML Web服务的Java API)是用于以XML格式创建Web服务的一组API,我们最常将其称为基于SOAP的Web服务 ,希望大家都知道基本的体系结构。

2.实施

首先,让我们检查一下pom文件的配置–

pom.xml

<!-- 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>

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>

让我们为我们的应用程序创建客户实体。

客户.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;
	}
}

现在让我们创建服务接口及其对应的服务实现类。

CustomerService.java

package com.jcombat.services.customers;
 
import com.jcombat.entity.Customer;
 
public interface CustomerService {
	public Customer getCustomerById(String customerId);
}

CustomerServiceImpl.java

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;
	}
}

下面是applicationContext的外观。

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

请注意,URL模式( / customer )绑定到了Web服务端点实现类( customerEndpoint ),如上面的代码片段所示。 下面是我们的customerEndpoint bean实现类的样子。

CustomerEndpoint.java

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;
	}
 
}

请注意,@ WebService批注指示服务器运行时环境将该类的所有公共方法公开为Web服务方法。 如果要防止任何方法公开为Web服务方法,则需要使用@WebMethod(exclude = true)注释该方法,如上面的代码片段所示。 同样,如果我们想将Web服务方法命名为与类中指定的实际方法名称( getCustomerById() )不同的名称,则需要在@WebMethod批注中添加operationName属性。

  • 如果在设置项目时遇到任何依赖性问题,可以参考此链接

3.运行应用程序

  • http:// localhost:8080 / SOAPWebServiceExample / customer?wsdl

一旦点击了上面的URL,就可以看到显示的WSDL内容,如下面的快照所示。

wsdl

我们还可以使用SOAP UI测试端点。 使用与上述相同的WSDL位置创建新的SOAP项目。

肥皂

4.下载源代码

翻译自: https://www.javacodegeeks.com/2016/02/web-service-application-jax-ws-spring.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值