`
lkjust08
  • 浏览: 15378 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

xfire 开发基础篇 一

阅读更多

      最近做的一个项目,因要用的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调用成功!!!

 

小弟初写,用词不当,还望指教。

下面有附件可供下载。

 

 

分享到:
评论

相关推荐

    Java Web整合开发王者归来1/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java.Web整合开发王者归来.part1

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等; 第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等; 第4篇为...

    Java.Web整合开发王者归来.part1(共3部分)

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过 滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的 使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等 ;第4篇为...

    Java Web整合开发王者归来2/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web整合开发王者归来(共4部分含源代码)part2

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web 整合开发王者归来9/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java.Web整合开发王者归来.pdf

    第2篇为基础篇,内容包括servlet技术、jsp技术、会话跟踪、过滤器filter、监听器listener等;第3篇为高级篇,内容包括jstl标签库的使用、如何自定义标签、资源国际化、数据库概述、jdbc详解、xml概述等;第4篇为...

    Java Web整合开发王者归来10/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web整合开发王者归来12/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web整合开发王者归来16/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web整合开发王者归来3/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web整合开发王者归来6/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web整合开发王者归来7/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web整合开发王者归来14/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web整合开发王者归来5/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web整合开发王者归来8/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web整合开发王者归来4/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web 整合开发王者归来15/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

    Java Web整合开发王者归来11/16

    第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、 资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...

Global site tag (gtag.js) - Google Analytics