标签:
(一) 通过 xfire 发布 webservice 服务 1.添加 xfire相关jar包(以maven为例): <dependency> <groupId>org.codehaus.xfire</groupId> <artifactId>xfire-all</artifactId> <version>1.2.6</version> </dependency> 2.配置 web.xml <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> //服务的发布匹配地址 </servlet-mapping> 3. 创建 服务接口 package demo; public interface ServerTest { void say(String str); } 4. 创建实现类实现 ServerTest package demo; public class ServerTestImpl implements ServerTest { public void say(String str) { System.out.println(str); } } 5. 定义 services.xml --> [ WEB-INF\classes\META-INF\xfire ] 发布webservice的配置 没有此文件需要创建 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>Test</name> //定义webservice的发布名称 <namespace>haople</namespace> //定义webservice的命名空间 <serviceClass>demo.ServerTest</serviceClass> //接口类 <implementationClass>demo.ServerTestImpl</implementationClass> //实现类 </service> </beans> 启动服务后:访问 http://127.0.0.1:8080/demo/services/Test?wsdl (二) 通过 xfire 客户端 调用 webservice 服务 方法一: package demo; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; public class ClientTest { public static void main(String[] args) { try { Service service=new ObjectServiceFactory().create(ServerTest.class); // 创建服务 ServerTest test=(ServerTest) new XFireProxyFactory().create(service, "http://127.0.0.1:8080/demo/services/Test"); //代理服务(此处不是wsdl地址) test.say("hello word!"); //执行方法 } catch (Exception e) { e.printStackTrace(); } } } 方法二: package demo; import java.net.URL; import org.codehaus.xfire.client.Client; public class ClientTest { public static void main(String[] args) { try { Client client=new Client(new URL("http://127.0.0.1:8080/demo/services/Test?wsdl")); //此处访问的是wsdl地址 client.invoke("say", new Object[]{"hello world!"}); //第一个参数为 执行的方法名,第二个参数是执行的参数,返回的是Object[] } catch (Exception e) { e.printStackTrace(); } } }
标签:
原文地址:http://my.oschina.net/haopeng/blog/396133