webservice(三)开发第一个基于XFire的

  在日常开发中,常用的webservice引擎主要有Axis,axis2,Xfire以及cxf(Xfire的升级版)。现在只有axis2和cxf官方有更新。今天我们先以一个比较老的引擎为例。来讲诉一下webservice的主要用法和简单原理。


      XFire是新一代的Java Web服务引擎,XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比,XFire的配置非常简单,可以非常容易地和Spring集成,它使得Java开发人员终于可以获得和.Net开发人员一样的开发效率。XFire是codeHaus组织提供的一个开源框架,它构建了POJOSOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程,也直接降低了SOA的实现难度,为企业转向SOA架构提供了一种简单可行的方式。下面我们就通过一个小例子来实现一个基于XFire的webservice程序。


开发环境 


Sun Java 6+ MyEclipse 8.5


首先建立一个webservice工程File—》new—》web service project


                                     



   输入你所想要的项目名。选中FrameWork为XFire,点击next


                                      


图中的Servlet class选中当前的servlet。其他的默认就可以了。点击next。然后选中假如当前的jar包。



下面我们看一下新创建的MyWebService Web Service工程的组织结构,Web Service 工程和一个标准的MyEclipse Web工程很相似(这是我们刚才配置时,Myeclipse给我自动假如的servlet的配置)


                                

 


整个工程的结构:


                                                                 



OK,开发前的大部分准备工作做完以后。下一步我们要进行的就是webservice的服务端,也就是提供给服务的一端的开发。其实这里所说的开发基本还是要靠Myeclipse的向导来帮我们完成。


File—》new—》other

                     



在图中的myeclipse文件夹中找出web services中的web service。选中。点击next


                


上图中Project所指定的就是我们要为哪个web项目创建service。这里我们当然选中的就是我们刚才所创建的MyWebService。然后要注意的就是这里的strategy 我们选中的是第二个:从java类中创建web服务、下面的创建新的java bean也要选中。点击next


                              


这里让我们填写一个创建web服务的名字。然后选择所生成的类的包名。其他的默认就好。点击finish



该向导产生了IMyWebServiceService Java接口和MyWebServiceServiceImpl Java.并且在services.xml配置文件中创建了一个实体(如图所示),注意到example(String name)方法在接口类中产生,Web Service部署后作为一个测试操作 


从上面代码中我们可以看出我们这个web服务的功能就是,当客户端给我传过来一个“name”。我们返回一个“hell + name”;


下一步要做的就是我们把我们这个web服务程序发布到服务器上。只有发布到程序上。别人才可以通过接口调用我们所写的服务。发布服务器的过程我就不写了。然后启动服务器。


OKweb服务写好了。Myeclipse为我们提供了一个很好的web服务的测试的功能。下面我们就用这个功能来测试一下我们的web服务是否写配置正确。


MyEclipse perspective中选择toolbar button来执行Web Service Explorer 

1.点击:                



2. 选择WSDL模式:
3. 在活动面板中键入MyWebServiceService WSDL文档的URL—http://localhost:8080/MyWebService/services/MyWebServiceService?WSDL,Web Service Explorer将下载自动产生的WSDL文档,WSDL文档由XFire framework,并产生一系列的操作能够调用service. 



4. 在活动面板中选择example操作并在in0域中键入MyWebService 

                                     



5. 选择Go按钮来调用在MyWebServiceService上的example操作,,结果出现在Status面板上  

                                                          



Ok,从图中我们可以发现。我们所做的的服务是成功的。既然是成功的。我们就可以发布到网络上。让需要的人可以调用我所提供的这个功能了。那么如何调用我们这功能呢?这就涉及到我们webservice 客户端的开发了。下面我们来看一下webservice客户端的开发。


为了方便理解。我们还是在我们本web 工程中创建客户端。首先我们要给我的工程添加webservice客户端的支持。也就是所谓的添加所需jar包。

右击工程—》点击BuildPath—》add libary—》选中XFire1.2HTTP-client libary

                               


Finish


创建测试类:

   


      该段代码定义了创建一个XFire web service proxy的过程,该代理支持POJO IMyWebServiceService接口 。运行上面一段代码。我们就成功的调用了我们所写的web服务功能



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是使用Java调用第webservice接口的示例代码: ```java import javax.xml.namespace.QName; import javax.xml.soap.*; import java.io.IOException; import java.net.URL; public class ThirdPartyWebServiceClient { public static void main(String[] args) throws SOAPException, IOException { String endpointUrl = "http://example.com/soap/wsdl"; String targetNamespace = "http://example.com/soap/namespace"; String soapAction = "http://example.com/soap/action"; // 创建SOAP消息 MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage soapMessage = messageFactory.createMessage(); // 创建SOAP消息体 SOAPPart soapPart = soapMessage.getSOAPPart(); SOAPEnvelope soapEnvelope = soapPart.getEnvelope(); soapEnvelope.addNamespaceDeclaration("ns", targetNamespace); SOAPBody soapBody = soapEnvelope.getBody(); QName operationName = new QName(targetNamespace, "operationName", "ns"); SOAPBodyElement operationElement = soapBody.addBodyElement(operationName); QName parameterName = new QName(targetNamespace, "parameterName", "ns"); SOAPElement parameterElement = operationElement.addChildElement(parameterName); parameterElement.addTextNode("parameterValue"); // 创建SOAP连接 SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection soapConnection = soapConnectionFactory.createConnection(); // 发送SOAP请求并接收响应 URL url = new URL(endpointUrl); SOAPMessage soapResponse = soapConnection.call(soapMessage, url); // 处理SOAP响应 SOAPBody soapResponseBody = soapResponse.getSOAPBody(); QName responseName = new QName(targetNamespace, "responseName", "ns"); SOAPElement responseElement = (SOAPElement) soapResponseBody.getFirstChildWithName(responseName); String responseValue = responseElement.getValue(); // 关闭SOAP连接 soapConnection.close(); } } ``` 这段代码使用了Java自带的`javax.xml.soap`包,通过创建SOAP消息和连接,向指定的webservice接口发送请求并接收响应。其中,`endpointUrl`为webservice接口的URL地址,`targetNamespace`为webservice接口的命名空间,`soapAction`为webservice接口的操作名称。 在创建SOAP消息时,我们首先创建了一个`MessageFactory`对象,然后使用该对象创建了一个`SOAPMessage`对象。接着,我们创建了SOAP消息体,设置了命名空间,操作名称和请求参数。然后,我们使用`SOAPConnectionFactory`创建了一个SOAP连接,使用`SOAPConnection`发送SOAP请求并接收响应。最后,我们从SOAP响应中获取了响应体中的数据。 希望这个示例可以帮助您了解Java中如何调用第webservice接口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值