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

运用XFire的嵌入式HTTP服务器发布服务

阅读更多

目录

  1. 构建项目
  2. 创建服务端API
  3. 嵌入式HTTP服务器发布服务
  4. 创建客户端

[一]、构建项目

maven构建项目:

1 mvn archetype:create -DgroupId=com.micmiu.xfire.demo -DartifactId=xfire-embedded-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

再执行:mvn eclipse:eclipse ,转化为eclipse项目并导入。

修改POM.xml 文件增加依赖lib:

1 <dependency>
2     <groupId>org.codehaus.xfire</groupId>
3     <artifactId>xfire-java5</artifactId>
4     <version>1.2.6</version>
5     <type>jar</type>
6     <scope>compile</scope>
7 </dependency>
8 <dependency>
9     <groupId>org.mortbay.jetty</groupId>
10     <artifactId>jetty</artifactId>
11     <version>6.1.26</version>
12     <type>jar</type>
13     <scope>compile</scope>
14 </dependency>
15 <dependency>
16     <groupId>javax.servlet</groupId>
17     <artifactId>servlet-api</artifactId>
18     <version>2.4</version>
19     <type>jar</type>
20     <scope>compile</scope>
21 </dependency>

如果不是用maven构建项目,下面给出示例项目所有依赖的lib详细列表:

 activation-1.1.jar
 ant-1.5.jar
 commons-attributes-api-2.1.jar
 commons-beanutils-1.7.0.jar
 commons-codec-1.3.jar
 commons-httpclient-3.0.jar
 commons-logging-1.0.4.jar
 jaxen-1.1-beta-9.jar
 jdom-1.0.jar
 jetty-6.1.26.jar
 jetty-util-6.1.26.jar
 junit-3.8.1.jar
 mail-1.4.jar
 qdox-1.5.jar
 servlet-api-2.4.jar
 servlet-api-2.5-20081211.jar
 stax-api-1.0.1.jar
 stax-utils-20040917.jar
 wsdl4j-1.6.1.jar
 wstx-asl-3.2.0.jar
 xercesImpl-2.6.2.jar
 xfire-aegis-1.2.6.jar
 xfire-annotations-1.2.6.jar
 xfire-core-1.2.6.jar
 xfire-java5-1.2.6.jar
 xfire-jsr181-api-1.0-M1.jar
 xmlParserAPIs-2.6.2.jar
 XmlSchema-1.1.jar

[二]、创建服务端API

编码服务接口:HelloEchoService.java

1 package com.micmiu.xfire.demo.embedded;
2  
3 /**
4  *
5  * @blog http://www.micmiu.com
6  * @author Michael
7  */
8 public interface HelloEchoService {
9  
10     String echo(String echo);
11  
12 }

接口的实现:HelloEchoServiceImpl.java

1 package com.micmiu.xfire.demo.embedded;
2  
3 /**
4  *
5  * @blog http://www.micmiu.com
6  * @author Michael
7  */
8 public class HelloEchoServiceImpl implements HelloEchoService {
9  
10     public String echo(String echo) {
11         return echo;
12     }
13  
14 }

[三]、嵌入式HTTP服务器发布服务

服务发布代码:ServiceStarter.java

1 package com.micmiu.xfire.demo.embedded;
2  
3 import org.codehaus.xfire.XFire;
4 import org.codehaus.xfire.XFireFactory;
5 import org.codehaus.xfire.aegis.AegisBindingProvider;
6 import org.codehaus.xfire.aegis.type.Configuration;
7 import org.codehaus.xfire.aegis.type.DefaultTypeMappingRegistry;
8 import org.codehaus.xfire.annotations.AnnotationServiceFactory;
9 import org.codehaus.xfire.server.http.XFireHttpServer;
10 import org.codehaus.xfire.service.Service;
11 import org.codehaus.xfire.service.binding.BindingProvider;
12 import org.codehaus.xfire.service.binding.ObjectServiceFactory;
13 import org.codehaus.xfire.service.invoker.ObjectInvoker;
14  
15 /**
16  *
17  * @blog http://www.micmiu.com
18  * @author Michael
19  */
20 public class ServiceStarter {
21  
22     XFireHttpServer server;
23  
24     public void start() throws Exception {
25  
26         XFire xfire = XFireFactory.newInstance().getXFire();
27  
28         // Create an XFire Service
29         ObjectServiceFactory serviceFactory = new ObjectServiceFactory(
30                 xfire.getTransportManager());
31  
32         // changer default configuration
33 //      Configuration configuration = new Configuration();
34 //      configuration.setDefaultMinOccurs(1);
35 //      configuration.setDefaultNillable(false);
36 //      DefaultTypeMappingRegistry tmr = new DefaultTypeMappingRegistry(null,
37 //              true, configuration);
38 //      AegisBindingProvider bind = new AegisBindingProvider(tmr);
39 //      ObjectServiceFactory serviceFactory = new ObjectServiceFactory(
40 //              xfire.getTransportManager(), bind);
41  
42         Service service = serviceFactory.create(HelloEchoService.class);
43 //      Service service = serviceFactory.create(HelloEchoService.class,
44 //              "HelloEchoService", null, null);
45  
46         // service.setInvoker(new BeanInvoker(new HelloEchoServiceImpl()));
47         service.setProperty(ObjectInvoker.SERVICE_IMPL_CLASS,
48                 HelloEchoServiceImpl.class);
49  
50         // Register the service in the ServiceRegistry
51         xfire.getServiceRegistry().register(service);
52  
53         // Start the HTTP server
54         System.out.println(" ----> XFire embedded HTTP Server start  <---- ");
55         server = new XFireHttpServer();
56         server.setPort(8090);
57         server.start();
58     }
59  
60     public void stop() throws Exception {
61         server.stop();
62     }
63  
64     /**
65      * @param args
66      */
67     public static void main(String[] args) {
68         try {
69             System.out.println(" ----> 服务发布 。。。 <---- ");
70             ServiceStarter service = new ServiceStarter();
71             service.start();
72         catch (Exception e) {
73             e.printStackTrace();
74         }
75     }
76  
77 }

运行日志:

 ----> 服务发布 。。。 <----
 ----> XFire embedded HTTP Server start  <----
2012-07-30 23:26:00.502:INFO::Logging to STDERR via org.mortbay.log.StdErrLog
2012-07-30 23:26:00.549:INFO::jetty-6.1.26
2012-07-30 23:26:00.623:INFO::Started SocketConnector@0.0.0.0:8090

浏览器输入:http://localhost:8090 和 http://localhost:8090/HelloEchoService?wsdl 回车:

[四]、创建客户端

编写客户端测试代码:ClientTest.java

1 package com.micmiu.xfire.demo.embedded;
2  
3 import org.codehaus.xfire.client.XFireProxyFactory;
4 import org.codehaus.xfire.service.Service;
5 import org.codehaus.xfire.service.binding.ObjectServiceFactory;
6  
7 /**
8  *
9  * @blog http://www.micmiu.com
10  * @author Michael
11  */
12 public class ClientTest {
13  
14     /**
15      * @param args
16      */
17     public static void main(String[] args) {
18         try {
19             System.out.println(" ----> 初始客户端 <---- ");
20             // Create a service model for the client
21             ObjectServiceFactory serviceFactory = new ObjectServiceFactory();
22             Service serviceModel = serviceFactory
23                     .create(HelloEchoService.class);
24  
25             // Create a client proxy
26             XFireProxyFactory proxyFactory = new XFireProxyFactory();
27             HelloEchoService client = (HelloEchoService) proxyFactory.create(
28                     serviceModel, "http://localhost:8090/HelloEchoService");
29  
30             System.out.println(client.echo("Hi,welcome to www.micmiu.com"));
31             System.out.println(" ----> 客户端调用结束 <---- ");
32         catch (Exception e) {
33             e.printStackTrace();
34         }
35  
36     }
37 }

运行日志:

 ----> 初始客户端 <----
Hi,welcome to www.micmiu.com
 ----> 客户端调用结束 <----

到此示例基本结束。

分享到:
评论

相关推荐

    xfire+webservice(服务器配置篇)

    ### xfire+webservice(服务器配置篇) #### 知识点概述 本文档主要介绍了如何在现有的Spring2.5+Hibernate3.2基础上添加XFire来实现WebService服务的配置过程。通过逐步指导的方式,帮助读者了解整个配置流程,并...

    xfire发布webservice服务

    【标题】:“xfire发布webservice服务” 在Java开发中,XFire是一个早期流行的Web服务框架,用于创建和消费Web服务。XFire是Apache CXF的前身,它提供了简单、高性能的方式来实现基于SOAP的Web服务。这篇博客文章...

    使用XFire发布WebService

    首先,我们将学习如何创建一个简单的服务接口和服务实现,然后通过XFire将其发布为SOAP Web服务。接着,我们将了解如何创建一个客户端,使用XFire提供的客户端API来调用这个Web服务。 **发布WebService服务器端** ...

    MyEclipse下通过Xfire实现Web服务发布的注意事项

    在本文中,我们将探讨如何在MyEclipse环境下利用Xfire框架发布Web服务,并进行客户端调用。Xfire是一个轻量级的Java Web服务框架,它简化了服务的创建和部署过程。 首先,确保你的开发环境准备就绪。安装Java ...

    XFire服务器端所用的jar

    XFire是一款开源的游戏服务器中间件,它为游戏...综上所述,XFire服务器端的JAR文件是构建游戏服务器的基础,它们提供了核心的服务和功能,而开发者则可以通过理解和利用这些组件,构建出满足特定需求的多人在线游戏。

    xfire发布和调用demo

    在描述中提到,开发者之前尝试使用CXF发布Web服务,但由于与IBM Websphere应用服务器存在兼容性问题,因此转向了Xfire。这可能是因为Xfire在当时的某些环境下更易于配置和集成,或者其API与Websphere的交互更为顺畅...

    xfire发布webservice

    通过上述步骤,我们可以清晰地看到如何利用XFire框架在服务器端发布一个简单的WebService,以及如何在客户端调用该服务。整个过程涉及项目创建、服务类编写、服务配置、以及客户端的调用,每个环节都是构建一个功能...

    XFire与Spring组合发布webservices

    本篇文章将深入探讨如何利用XFire与Spring的组合来发布Web服务,并提供具体的实例和所需资源。 首先,XFire(现在称为Apache CXF的一部分)是一个轻量级的Web服务框架,它支持SOAP、RESTful等多种Web服务协议,并且...

    XFire Webservice 服务器端

    XFire Webservice 服务器端是一个专门用于游戏社区的网络服务接口,它允许开发者与XFire游戏客户端进行交互,实现各种功能,如用户登录、好友系统、游戏统计等。在这个压缩包文件中,"WSA"可能代表Web Service ...

    嵌入式Xfire(Webservice )

    嵌入式Xfire(Webservice)是一个用于构建和消费Web服务的开源框架,它在Java环境中提供了高效且灵活的解决方案。Xfire集成了多种技术,如Aegis绑定、SOAP处理和WSDL支持,使得开发人员能够轻松地创建、部署和使用...

    在Eclipse下用xfire创建webserver服务器demo

    然后,你需要创建一个启动类,用来启动Xfire的HTTP服务器,让Web服务可以被外界访问。以下是一个简单的启动类示例: ```java import org.codehaus.xfire.XFire; import org.codehaus.xfire.service.Service; import...

    xfire+spring+maven构建webservice服务器和客户端

    标题中的“xfire+spring+maven构建webservice服务器和客户端”揭示了本教程将围绕三个主要技术进行讨论:XFire、Spring和Maven。这三者都是Java开发中不可或缺的工具,尤其在构建Web服务方面。 XFire是早期的一个...

    xfire初体验,webServices服务器配置

    标题中的“xfire初体验,webServices服务器配置”揭示了本次知识分享主要涉及两个关键概念:Xfire和Web服务服务器的配置。Xfire是一款已经不再更新的即时通讯软件,但在过去,它常用于游戏社区,允许玩家在多款游戏中...

    Spring+hebinate+xfire整合的web services服务器例子

    通过这样的整合,你可以利用Spring的管理能力、Hibernate的数据持久化功能和XFire的Web服务发布能力,构建出一个高效、灵活的Web服务服务器。这种集成方法对于需要跨系统交互或者希望通过Web服务提供业务功能的企业...

    xFire发布Web Service,并调用远程服务

    在本主题中,我们将深入探讨如何使用xFire来发布Web服务以及如何调用远程服务。 首先,让我们了解xFire的核心功能。xFire是一个基于Java的框架,它提供了对SOAP(Simple Object Access Protocol)协议的强大支持,...

    使用xfire发布的webservice完整实例

    5. **发布服务**:通过调用Xfire提供的API或启动配置文件,将你的服务发布到一个HTTP服务器上,使得其他应用程序可以通过网络访问。 6. **测试与调用**:发布服务后,可以使用Xfire的测试工具,或者其他的SOAP...

    java xfire webService服务器端

    在本文中,我们将深入探讨Java XFire在构建Web服务服务器端的角色,以及如何利用它进行开发。 首先,让我们理解Web服务的基本概念。Web服务是一种基于互联网的软件应用,它提供了一种标准化的方式,使不同系统之间...

    实战Mule:利用Mule调用XFire发布的文件上传服务

    通过XFire,我们可以快速发布一个文件上传服务,这个服务接受文件并存储到服务器上。 在实战中,首先我们需要在XFire中创建一个文件上传服务。这通常涉及到以下几个步骤: 1. 定义服务接口:使用Java注解定义上传...

    xfire整合spring发布web services

    【Xfire整合Spring发布Web Services】是将Xfire——一个基于Java的Web服务实现框架,与Spring——一个广泛使用的轻量级应用框架相结合,用于构建和发布Web服务的过程。这个整合使得开发人员能够利用Spring的强大功能...

Global site tag (gtag.js) - Google Analytics