cxf3.0.4部署到tomcat容器

1.在myeclipse新建一个webproject,名为cxf01

2.导入cxf的jar包到工程的/WebRoot/root目录下


3.写一个类:UserService,里面写一个简单的testHello方法,在类上和方法上加上jdk自带的WebService注解

package com.gsta.ws.demo01;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.BindingType;
import javax.xml.ws.soap.SOAPBinding;

/**
 * 使用cxf发布一个WebService
 * 
 * @author CaiBaoHong
 * 
 */
// 请注意:@WebService注解使用的是jdk的api,并不是cxf的api
@WebService(name = "UserService",//
			serviceName = "UserServiceWS",//
			targetNamespace = "http://www.userws.com/",//
			portName = "UserServicePort")
//@BindingType(value="http://www.w3.org/2003/05/soap/bindings/HTTP/")//如果要发布SOAP1.2版本的WebService才用这个配置,一般不需要
public class UserService {

	@WebMethod(action = "testHello")//testHello是请求的路径
	public @WebResult(name = "testHelloResult")//testHelloResult是结果的名称
	String testHello(@WebParam(name = "name") String name) {//name是请求的参数名
		return "Hello," + name;
	}

}

4.在/WebRoot/WEB-INF/web.xml文件中配置cxf框架的入口servlet : CXFServlet

<?xml version="1.0" encoding="UTF-8"?>
<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_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>cxf01</display-name>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<servlet>
		<servlet-name>cxf-servlet</servlet-name>
		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
		<init-param>
			<param-name>config-location</param-name>
			<param-value>classpath:cxf-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>cxf-servlet</servlet-name>
		<url-pattern>/ws/*</url-pattern>
	</servlet-mapping>
</web-app>
其中,init-param中的config-location,为什么要配置这个参数名?自己引入cxf源码包,看CXFServlet源码就知道了,源码如下:


5.对着工程邮件New-新建一个Source Folder,名为conf。接下来就要写上面截图中的那个cxf-servlet.xml配置文件了。CXFServlet需要读取配置文件中的信息来发布WebService。因为配置文件不知道怎么写,所以要到cxf的包下面去找例子:

到\apache-cxf-3.0.4\samples目录下,在搜索框搜索“cxf-servlet.xml”,然后随便拷贝一个到工程conf目录下:




刚拷贝的cxf-servlet.xml会有其它无用的配置,我们只需要保留配置文件的xsd约束信息,上图红色圈的就是cxf发布WebService所需要的名称空间。


6.cxf-servlet.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:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation=" http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans.xsd 
	http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
	<!-- 
	1.<jaxws:endpoint>标签是用于将一个普通类发布成服务的,假如UserService不是一个类而是一个接口,应该用<jaxws:server>标签来发布
	2.implementor就是要发布成WebService的类
	3.address就是WebService的访问路径,
	完整路径是 :http://<ip地址>:<tomcat端口>/<web工程名>/<CXFServlet对应的servlet-mapping的映射地址>/address属性的值
	本例中是:    http://127.0.0.1:8080/cxf01/ws/UserService
	 -->
	<jaxws:endpoint id="userService" implementor="com.gsta.ws.demo01.UserService" address="/UserService">
		
		<!-- 配置消息进入和出去的日志拦截器,是为了在控制台能方便看到请求响应的信息 -->
		<jaxws:inInterceptors>
			<bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
		</jaxws:inInterceptors>
		<jaxws:outInterceptors>
			<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
		</jaxws:outInterceptors>
		
	</jaxws:endpoint>
</beans>

7.运行tomcat,访问http://127.0.0.1:8080/cxf01/ws:


8.点击连接,然后复制地址栏的wsdl文件路径:



9.在myeclipse打开soap浏览器:



10.右上角点检wsdlpage按钮:


11.粘贴wsdl文件路径然后点击go


12.填写请求参数然后点击go


13.查看响应信息



14.完毕。
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值