webservice框架
webservice框架jdk自带的JWSeg: 1.3、部署服务 2、客户端建立 调用webService [java] view plaincopy CXF该框架提供了以下功能: Web 服务标准支持:CXF 支持以下 Web 服务标准: Java API for XML Web Services (JAX-WS) SOAP Web 服务描述语言(Web Services Description Language ,WSDL) 消息传输优化机制(Message Transmission Optimization Mechanism,MTOM) WS-Basic Profile WS-Addressing WS-Policy WS-ReliableMessaging WS-Security 1 首先服务点接口。 package com.demo; import java.util.List; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface HelloWorld { String sayHi(@WebParam(name="text")String text); String sayHiToUser(User user); String[] SayHiToUserList(List<User> userList); } 2 编写服务实现 package com.demo; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.jws.WebService; @WebService(endpointInterface="com.demo.HelloWorld",serviceName="HelloWorld") public class HelloWorldImpl implements HelloWorld { Map<Integer,User> users = new LinkedHashMap<Integer,User>(); public String sayHi(String text) { return "Hello " + text; } public String sayHiToUser(User user) { users.put(users.size()+1,user); return "Hello "+ user.getName(); } public String[] SayHiToUserList(List<User> userList) { String[] result = new String[userList.size()]; int i=0; for(User u:userList){ result[i] = "Hello " + u.getName(); i++; } return result; } } 3 编写 webServiceApp.java类来暴露 web服务。 package com.demo; import javax.xml.ws.Endpoint; public class webServiceApp { public static void main(String[] args) { System.out.println("web service start"); HelloWorldImpl implementor= new HelloWorldImpl(); String address="http://localhost:8080/helloWorld"; Endpoint.publish(address,implementor); System.out.println("web service started"); } } 4 run webServiceApp.java 类来启动服务。 访问 http://localhost:8080/helloWorld?wsdl 查看是否显示 wsdl。 5 编写客户端访问服务。 package com.demo; import java.util.ArrayList; import java.util.List; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.springframework.context.support.ClassPathXmlApplicationContext; public class HelloWorldClient { public static void main(String[] args) { JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean(); svr.setServiceClass(HelloWorld.class); svr.setAddress("http://localhost:8080/helloWorld"); HelloWorld hw = (HelloWorld) svr.create(); User user = new User(); user.setName("Tony"); user.setDescription("test"); System.out.println(hw.sayHiToUser(user)); } } 6 测试: run webServiceApp.java 类来启动服务,然后 run HelloWorldClient.java 来访问服务。 XFire创建WebService实例应用XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比, 一. 使用XFire发布WebService
Java代码 收藏代码 package com.test.service; import com.test.service.bean.User; public interface IHelloService { public String sayHello(String name); public User getUser(User user); } } 2.创建Service接口的实现类 package com.test.service; import com.test.service.bean.User; public class HelloService implements IHelloService{ public String sayHello(String name){ return "Hello,"+name; } public User getUser(User user) { User userNew = new User(); userNew.setId("new:"+user.getId()); userNew.setName("new:"+user.getName()); return userNew; } } Java代码 收藏代码 package com.test.service.bean; public class User { private String id; private String 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; } } 3.在web.xml文件中进行XFire拦截配置,可参照官网提供的sample。 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class> org.codehaus.xfire.transport.http.XFireConfigurableServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/servlet/XFireServlet/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app> 4.在class目录下建立META-INF目录,如(META-INF>xifre->services.xml), <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>HelloService</name> <serviceClass>com.test.service.IHelloService</serviceClass> <implementationClass>com.test.service.HelloService</implementationClass> </service> </beans> 5.将xfire的Jar包和相关依赖包拷到系统应用中,在Tomcat下部署应用。 点击后查看详细的wsdl文档,不同的浏览器下访问会有区别,展示效果不一致。 二.建立XFire客户端进行调用 1.本地客户端调用,与webservice服务在同一应用。 Java代码 收藏代码 package com.test.client; import java.net.MalformedURLException; import org.codehaus.xfire.XFireFactory; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; import com.test.service.IHelloService; import com.test.service.bean.User; public class ClientTest { public static void main(String args[]) throws MalformedURLException { Service service = new ObjectServiceFactory().create(IHelloService.class); XFireProxyFactory factory = new XFireProxyFactory(XFireFactory .newInstance().getXFire()); String url = "http://localhost:8080/ws2/services/HelloService"; IHelloService helloService = (IHelloService) factory.create(service,url); System.out.println(helloService.sayHello("张三")); User user = new User(); user.setName("张三"); System.out.println(helloService.getUser(user).getName()); } } 执行结果如下: Java代码 收藏代码 Hello,张三 new:张三
Axis2Apache Winkresteasydubbo(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |