最近做的一个项目,因要用的webservice,因看了一下这方面的东西,以前只是听说,从未用过,目前较流行的webservice 第三方有:xfire和axis,而axis是Apache下的项目,这里我主要说的是xfire:
基于xfire的webservice开发主要由以下几步:
1.定义web接口;
2.实现web接口;
3.描述wsdl,即web服务,
4.发布webservice
5.客户端调用;
下面给出一个例子,来分析各步:
准备工作,新建一个web工程,这里我定义为:xfiretest,定义包:com.test
1)定义web接口:com.test.ITestService
public interface ITestService {
public void say();
}
2)实现web接口:com.test.TestService
public class TestService implements ITestService {
public void say() {
// TODO Auto-generated method stub
System.out.println("web service调用成功!!!");
}
}
3)描述wsdl,即web服务:
先要工程的src下新建文件夹:META-INF/xfire,然后新建文件,名为service.xml(必须为此名)
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<service xmlns="http://xfire.codehaus.org/config/1.0">
<name>Test</name><!-- web service调用的服务名,如:http://localhost:8080/xfiretest/services/Test -->
<serviceClass>com.test.ITestService</serviceClass><!-- web service接口 -->
<implementationClass>com.test.TestService</implementationClass><!-- web service的实现 -->
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
</beans>
注意:这里节点名为"beans",你可能想到了spring的bean,不错,在《XFire开发指南》一书中指出,xfire用XBean语法来处理这个service.xml文件,而XBean允许用户将自定义语法与spring语法混在一起,由此我们开以看以xfire也需spring的支持,因些在稍后我给出的jar包中有spring的jar。
service.xml文件放在该目前下,就可以编译到classes下。
到这里还有重要的一步,就要要在web工程里提供对web service的支持,在web.xml文件里添加一个XfireServlet
在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>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
4)发布web service
启动web 服务器,我这里用的是Tomcat,当然你可以选择自己较熟悉的服务器
然后在浏览器里输入 :http://localhost:8080/xfiretest/services/Test?wsdl
就可以看到你所发布的web service 信息,"services/Test?wsdl
"就是你在service.xml中定的web service名子
如果你能看到如下信息:
<wsdl:definitions targetNamespace="http://test.com">
<wsdl:types>
<xsd:schema attributeFormDefault="qualified"
elementFormDefault="qualified" targetNamespace="http://test.com">
<xsd:element name="say">
<xsd:complexType />
</xsd:element>
<xsd:element name="sayResponse">
<xsd:complexType />
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="sayRequest">
<wsdl:part name="parameters" element="tns:say"></wsdl:part>
</wsdl:message>
<wsdl:message name="sayResponse">
<wsdl:part name="parameters" element="tns:sayResponse">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="TestPortType">
<wsdl:operation name="say">
<wsdl:input name="sayRequest" message="tns:sayRequest">
</wsdl:input>
<wsdl:output name="sayResponse" message="tns:sayResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="TestHttpBinding" type="tns:TestPortType">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="say">
<wsdlsoap:operation soapAction="" />
<wsdl:input name="sayRequest">
<wsdlsoap:body use="literal" />
</wsdl:input>
<wsdl:output name="sayResponse">
<wsdlsoap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Test">
<wsdl:port name="TestHttpPort" binding="tns:TestHttpBinding">
<wsdlsoap:address
location="http://localhost:8080/xfiretest/services/Test" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
表明你的web service已成功发布。
5)客户端调用
你可以重新新建一个java工程,把(1)中的ITestService接口复制到你的工程中,包括包名。然后新建类WebTest含main方法
如下:
Service srvcModel = new ObjectServiceFactory()
.create(ITestService.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
String helloWorldURL = "http://192.168.2.99:8080/xfiretest/services/Test";
try {
ITestService srvc = (ITestService) factory.create(
srvcModel, helloWorldURL);
srvc.say();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
运行,你如看到如下信息:web service调用成功!!!
小弟初写,用词不当,还望指教。
下面有附件可供下载。
分享到:
相关推荐
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等; 第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等; 第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过 滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的 使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等 ;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括servlet技术、jsp技术、会话跟踪、过滤器filter、监听器listener等;第3篇为高级篇,内容包括jstl标签库的使用、如何自定义标签、资源国际化、数据库概述、jdbc详解、xml概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...