有需要学习例子,到这里下载地址
http://download.csdn.net/detail/wqsmd1/4470343
第一步:改造Web.xml
<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>/webServices/*</url-pattern>
</servlet-mapping>
重点:
配置webService对应的Jar包
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
webService访问的地址格式
<url-pattern>/webServices/*</url-pattern>
第二步:添加Sping关联的配置头文件
<beansxmlns="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/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://cxf.apache.org/jaxwshttp://cxf.apache.org/schemas/jaxws.xsd">
重点:xmlns:jaxws="http://cxf.apache.org/jaxws
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
第三步:添加Sping关联的配置的示范代码
<beanid="IsshWs" class="com.test.wsservice.impl.SshWsImpl">
<propertyname="userServiceTarget" ref="userServiceTarget"></property>
</bean>
<jaxws:endpointimplementor="#IsshWs" address="/cxfssh.ws">
</jaxws:endpoint>
package com.test.wsservice;
import java.util.List;
import javax.jws.WebService;
import com.test.bean.EmpLevel;
import com.test.bean.Users;
@WebService
public interface IsshWs {
// 定一个Web Service的操作。
voidaddThread(String fristName, String name, int age,EmpLevel emplv);
voidaddUserList(List<Users> list);
voidaddUserbyte(byte[] by);
voidaddUser(Users users);
}
package com.test.wsservice.impl;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebService;
import com.test.bean.EmpLevel;
import com.test.bean.Users;
import com.test.service.UserService;
import com.test.util.ObjectConvert;
import com.test.wsservice.IsshWs;
@WebService(endpointInterface = "com.test.wsservice.IsshWs",serviceName = "IsshWs")
public class SshWsImpl implements IsshWs {
privateUserService userServiceTarget;
@Override
publicvoid addThread(String fristName, String name, int age, EmpLevel emplv) {
//应该通过调用业务逻辑组件的方法来实现该方法。
Usersuser = new Users();
user.setFirstname(fristName);
user.setLastname(name);
user.setAge(age);
user.setEmpLevel(emplv);
userServiceTarget.save(user);
}
publicvoid setUserServiceTarget(UserService userServiceTarget) {
this.userServiceTarget= userServiceTarget;
}
publicUserService getUserServiceTarget() {
returnuserServiceTarget;
}
@Override
publicvoid addUserList(List<Users> list) {
List<Users>userlist=new ArrayList<Users>();
userlist=list;
userServiceTarget.saveUserList(userlist);
}
@Override
publicvoid addUserbyte(byte[] by) {
List<Users>list = (List<Users>) ObjectConvert.ByteToObject(by);
userServiceTarget.saveUserList(list);
}
@Override
publicvoid addUser(Users users) {
userServiceTarget.save(users);
}
}
第四步:Struts里面放行WS
struts.xml:
<action name="webServices/*.ws">
<result>webServices/{1}.ws</result>
</action>
与web.xml里url相对应
第五步:测试WS地址,并生成客户端代码
http://127.0.0.1:8080/testssh/webServices/cxfssh.ws?wsdl
备注:
1. webServices在web.xml里url相对应,并且struts.xml放行
2. cxfssh.ws在applicationContext.xml里配置的,并且与struts.xml相对应
生成客户端代码:
1. 进入客户端源文件夹
2. 运行以下代码
Wsdl2javahttp://127.0.0.1:8080/testssh/webServices/cxfssh.ws?wsdl
测试类:
package com.test.main;
import java.util.ArrayList;
import java.util.List;
import com.test.util.ObjectConvert;
import com.test.wsservice.EmpLevel;
import com.test.wsservice.Users;
import com.test.wsservice.impl.IsshWs;
public class TestMain {
/**
* @param args
*/
public staticvoid main(String[] args) {
//用实现类new一个WS的factory
IsshWsfactory = new IsshWs();
//使用接口来取得代理
com.test.wsservice.IsshWssw=factory.getSshWsImplPort();
// sw.addThread("chen","youyi", 29);
List<Users>list=new ArrayList();
EmpLevelemplv1=new EmpLevel();
emplv1.setId((short)1);
EmpLevelemplv2=new EmpLevel();
emplv1.setId((short)2);
Usersu1=new Users();
u1.setFirstname("sfgs1");
u1.setLastname("sdasdf1");
u1.setAge(12);
u1.setEmpLevel(emplv1);
sw.addUser(u1);
Users u2=newUsers();
u2.setFirstname("sfgs2");
u2.setLastname("sdasdf2");
u2.setAge(12);
u2.setEmpLevel(emplv2);
list.add(u1);
list.add(u2);
// sw.addUserList(list);
// byte[]by=ObjectConvert.ObjectToByte(list);
// sw.addUserbyte(by);
}
}
几张CXF关联流程图整理-------------------------------------à
WebService改造流程图:
WebService栏截器流程图:
WebService流程图:
WebService自动生成代码:
应用分析图解: