Ssh项目添加WebService功能的步骤
?有需要学习例子,到这里下载地址 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,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自动生成代码: ? ? ? ? 应用分析图解: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- bash – grep总是返回“指定的grep:Conflicting matchers”
- rxjs5 / Angular – 清除ReplaySubject缓冲区
- angularjs – 崇高文本2:基于上下文的不同语言突出显示?
- AngularJS简介
- apt-get install失败后强制跳过的方法,修改/var/lib/dpkg/
- REST WebService与SOAP WebService的比较
- Angular4的QuickStart—— ES6 而非TypeScript
- angularjs表达式中的HTML内容,如何不转义,直接表现为html
- 斯卡拉:除以零
- Bash Shell awk / xargs魔术