Apache CXF 是一个开放源代码框架。在几个主流框架中,性能最佳,学习成本比axis2要低很多。这是性能测试的文章链接。http://blog.youkuaiyun.com/chenleixing/article/details/44958549
不多说,直接上代码,配置web.xml
<!-- 告知javaEE容器,有哪些内容需要添加到上下文中去 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:cxf-applicationContext.xml
</param-value>
</context-param>
<servlet><servlet-name>mcs-servlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet </servlet-class>
<load-on-startup>101</load-on-startup></servlet><servlet-mapping>
<servlet-name>mcs-servlet</servlet-name>
<url-pattern>/webservice/*</url-pattern>
</servlet-mapping>
cxf-application.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" xmlns:context="http://www.springframework.org/schema/context"
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 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.develop.ssm.modules.rsport.webservice.*">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
<context:component-scan base-package="com.develop.ssm.modules.rsport.webservice.*">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<!-- <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/> -->
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<jaxws:endpoint
id="webOperator"
implementor="com.develop.ssm.modules.rsport.webservice.impl.RsWebInterfaceImpl"
address="/rsWebInterface" />
<bean id="client" class="com.develop.ssm.modules.rsport.webservice.RsWebInterface"
factory-bean="clientFactory" factory-method="create"/>
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.develop.ssm.modules.rsport.webservice.RsWebInterface"/>
<property name="address" value="http://localhost:8080/webservice/rsWebInterface"/>
</bean>
</beans>
java接口代码
package com.develop.ssm.modules.rsport.webservice;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
/**
* Created by hezhan01 on 2017/6/19.
*/
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface RsWebInterface {
public String webInvoke(@WebParam(name = "param") String param) throws Exception;
public void test();
}
java实现类代码
@WebService(endpointInterface = "com.develop.ssm.modules.rsport.webservice.RsWebInterface", serviceName = "rsWebInterface")
public class RsWebInterfaceImpl implements RsWebInterface{
@Resource
private WebServiceContext context;
@Override
public String webInvoke(String param) throws Exception{
//设置时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String dateStr = sdf.format(date);
//获取当前项目的路径
String path=Thread.currentThread().getContextClassLoader().getResource("").getPath();
//去掉路径前面的斜杠
path = path.substring(1);
sdf = new SimpleDateFormat("yyyyMMdd");
path = path+"logs";
File file = new File(path);
//判断文件夹是否存在
if(!file.exists()&&!file.isDirectory()){
//创建文件夹
file.mkdir();
}
//每天一个文件
path = path + "/log_"+sdf.format(date)+".txt";
File writename = new File(path);
//判断文件是否存在
if(!writename.exists()){
// 创建新文件
writename.createNewFile();
}
//设置成追加内容模式 true
FileWriter fw = new FileWriter(writename,true);
PrintWriter out = new PrintWriter(fw);
//写入内容
out.println("时间:" + dateStr + " webservice-入参内容:" + param );
// 把缓存区内容压入文件
out.flush();
fw.flush();
// 最后关闭文件
out.close();
fw.close();
return param;
}
public void test(){
}
}