记录下用xfire开发Webservice的过程
使用Eclipse创建WebService项目
1. 创建接口类(HelloWord)和实现类(HelloWordImpl)实现类代码:
public class HelloWorldImpl implements HelloWorld { public String getXml(String source) { return "this is a xml" + source; } }
2.修改web.xml 添加 /servlet/XFireServlet/ (不添加也可)
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <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>/servlet/XFireServlet/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
3.创建services.xml (namespace也可使用 http://wang.K-inc.com:91/webservice/services/helloWorld)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>helloWorld</name> <namespace>http://wang.K-inc.com:91/webservice/servlet/XFireServlet/</namespace> <serviceClass>com.k.test.HelloWorld</serviceClass> <implementationClass>com.k.test.HelloWorldImpl</implementationClass> </service> </beans>
4.编写完将其部署在Tomcat服务上 访问 http://wang.k-inc.com:91/webservice/servlet/XFireServlet/helloWorld?wsdl 或 http://wang.k-inc.com:91/webservice/services/helloWorld?wsdl 如果配置正确就会出现下面的结果
<wsdl:definitions xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" xmlns:tns="http://wang.K-inc.com:91/webservice/servlet/XFireServlet/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" targetNamespace="http://wang.K-inc.com:91/webservice/servlet/XFireServlet/"> <wsdl:types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://wang.K-inc.com:91/webservice/servlet/XFireServlet/"> <xsd:element name="getXml"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="getXmlResponse"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="getXmlRequest"> <wsdl:part name="parameters" element="tns:getXml"></wsdl:part> </wsdl:message> <wsdl:message name="getXmlResponse"> <wsdl:part name="parameters" element="tns:getXmlResponse"></wsdl:part> </wsdl:message> <wsdl:portType name="helloWorldPortType"> <wsdl:operation name="getXml"> <wsdl:input name="getXmlRequest" message="tns:getXmlRequest"></wsdl:input> <wsdl:output name="getXmlResponse" message="tns:getXmlResponse"></wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="helloWorldHttpBinding" type="tns:helloWorldPortType"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getXml"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="getXmlRequest"> <wsdlsoap:body use="literal"/> </wsdl:input> <wsdl:output name="getXmlResponse"> <wsdlsoap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="helloWorld"> <wsdl:port name="helloWorldHttpPort" binding="tns:helloWorldHttpBinding"> <wsdlsoap:address location="http://wang.k-inc.com:91/webservice/servlet/XFireServlet/helloWorld"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
扫描二维码关注公众号,回复:
1237691 查看本文章
5.编写Client调用此接口 首先创建一个java项目
添加一个接口类 HelloWorld 跟先前创建的接口类一样
创建一个类用main函数调用webService接口
public class Main { public static void main(String[] args) throws MalformedURLException, Exception { XFireProxyFactory factory = new XFireProxyFactory(XFireFactory .newInstance().getXFire()); Client client = new Client( new URL( "http://wang.K-inc.com:91/webservice/services/helloWorld?wsdl"), HelloWorld.class); System.out.println(((HelloWorld) factory.create(client)) .getXml("ABCEEFG111:ddd")); Client client1 = new Client( new URL( "http://wang.K-inc.com:91/webservice/servlet/XFireServlet/helloWorld?wsdl")); System.out.println(client1.invoke("getXml", new Object[] { "kkkkkkkxxxxxx" })[0]); } }
运行结果: this is a xmlABCEEFG111:ddd
this is a xmlkkkkkkkxxxxxx