使用CXF框架发布SOAP格式的webservice

    使用apache基金开发的CXF框架发布webservice非常简单方便,而且支持SOAP和REST格式的服务。

第一步:到apache官方网站上下载最新的版的CXF的框架,到目前最新的版本为2.7.7,下载地址为http://cxf.apache.org/download.html.

解压后lib目录的jar包如下图所示:

第二步:新建web项目将所有jar包复制到WEB-INF/lib目录下。然后配置web.xml文件如下:

 <context-param>
  	<param-name>log4jConfigLocation</param-name>
  	<param-value>/WEB-INF/classes/log4j.properties</param-value>
  </context-param>
  
  <context-param>
  	<param-name>log4jRefreshInterval</param-name>
  	<param-value>6000</param-value>
  </context-param>
  
  <listener>
  	<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
  
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>WEB-INF/*-content.xml</param-value>
  </context-param>
  
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <servlet>
  	<servlet-name>CXFServlet</servlet-name>
  	<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>CXFServlet</servlet-name>
  	<url-pattern>/services/*</url-pattern>
  </servlet-mapping>
其中部分涉及到log4j的内容请参考本文的上一篇< spring和log4j在web环境中的配置 spring3.2.5 log4j1.2.17 >的文章.

第三步:新建实体类Book,代码如下:

package edu.whu.cs.entity;

public class Book {
	
	private String id;
	
	private String name;
	
	public Book(){}
	
	public Book(String id,String name){
		this.id=id;
		this.name=name;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	

}

然后是服务接口的设计BookService,

package edu.whu.cs.service;

import java.util.List;

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

import edu.whu.cs.entity.Book;

@WebService(name = "BookService", targetNamespace = "http://service.cs.whu.edu/")
public interface BookService {
	
	@WebMethod(operationName = "getBook", action = "urn:GetBook")
	public Book getBook(@WebParam(name = "id") String id);
	
	@WebMethod(operationName = "findBook", action = "urn:FindBook")
	public List<Book> findBook();
	
	@WebMethod(operationName = "insert", action = "urn:Insert")
	public boolean insert(@WebParam(name = "book") Book book);
	
	@WebMethod(operationName = "remove", action = "urn:Remove")
	public boolean remove(@WebParam(name = "id")String id);

}

最后是接口的实现类:

package edu.whu.cs.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.jws.WebService;

import edu.whu.cs.entity.Book;
import edu.whu.cs.service.BookService;

@WebService(targetNamespace = "http://impl.service.cs.whu.edu/", portName = "BookServiceImplPort", serviceName = "BookServiceImplService")
public class BookServiceImpl implements BookService{
	
	List<Book> books=new ArrayList<Book>();
	
	public BookServiceImpl(){
		books.add(new Book("1","java"));
		books.add(new Book("2","C"));
		books.add(new Book("3","C++"));
		books.add(new Book("4","C#"));
	}

	@Override
	public Book getBook(String id) {
		return books.get(Integer.parseInt(id)-1);
	}

	@Override
	public List<Book> findBook() {
		return books;
	}

	@Override
	public boolean insert(Book book) {
		books.add(book);
		return true;
	}

	@Override
	public boolean remove(String id) {
		books.remove(Integer.parseInt(id)-1);
		return true;
	}

}
将项目发布到服务器中,在浏览器中输入http://127.0.0.1:8080/你的项目名称/services/即可看到相关服务.可以用SoapUI对发布的服务进行测试.

TIP: @WebService 、@WebMethod、@WebParam等注解的生成可以用Annotation Properties面板辅助生成.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值