`
crazycat03
  • 浏览: 175879 次
  • 性别: Icon_minigender_2
  • 来自: 呼和浩特
社区版块
存档分类
最新评论

java webservice的其中一种用法

    博客分类:
  • java
阅读更多

前两天用了点webservice部分,这里记一下,呵呵

1 首先服务器端(我这里是struts+spring环境,客户端在另一个工程)

和普通的类没什么区别,主要是要让它发布成webservice,可以通过?wsdl查看的

1.1需要一个接口和一个实现类,接口主要控制你要暴露的方法

public interface UserInfoInterface { 

public String[] getUser(String arg)throws Exception ; 

public String sayHello(String arg)throws Exception; 

} 


public class UserInfoImpl implements UserInfoInterface { 

private UserService userService;//注入需要的service,添加相应的get,set方法 
public String[] getUser(String arg)throws Exception{ 

String[] results = new String[3]; 
  if(!StringUtil.isBlank(arg)){ 

   //results[0] = userService.getUser(arg);可以放入string类型的任意数据 
   results[0] = userService.getUser(arg); 
   results[1] = userService.getUser(arg); 

   results[2] = userService.getUser(arg); 

  } 
  return results; 

} 
pubic String sayHello(String arg)throws Exception{ 

      return "hello,"+ arg;//最常见的,呵呵,这里主要用于测试接收的数据 

} 

} 

 



1.2配置文件

首先xml文件 ,添加

 <!-- webservice xfire配置开始 -->
 <servlet>   
       <servlet-name>xfire</servlet-name>   
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>   
    <servlet-mapping> 
       <servlet-name>xfire</servlet-name>
       <url-pattern>*.ws</url-pattern>
    </servlet-mapping>
 
 <servlet>
     <servlet-name>XFireServlet</servlet-name>
     <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
   </servlet>
    <servlet-mapping>
     <servlet-name>XFireServlet</servlet-name>
     <url-pattern>/services/*</url-pattern>
   </servlet-mapping>
   <!-- webservice xfire配置结束 -->

 
webservice相关配置文件,只要在web.xml配置当启动时候加载就可以

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
 <!-- 引入XFire预配置信息 -->
 <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
 
 <bean id="getUserInfo"
  class="com.crazycat.UserInfoImpl" singleton="true">
  <!-- 用户service -->
  <property name="userService">
   <ref bean="userService" />
  </property>
   </bean>
 
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
       <property name="urlMap">             
           <map>                 
              <entry key="/GetUserInfo.ws">                  
                  <ref bean="getUserInfo" />                 
              </entry>             
           </map>         
       </property>     
    </bean> 
    
    <!-- 使用XFire导出器 -->
    <bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">
       <!-- 引用xfire.xml中定义的工厂 -->
       <property name="serviceFactory" ref="xfire.serviceFactory" />
       <!-- 引用xfire.xml中的xfire实例 -->
       <property name="xfire" ref="xfire" />
    </bean>
    
 <bean id="GetDealStatisticInfoService"
  class="org.codehaus.xfire.spring.remoting.XFireExporter" parent="baseWebService">
<!--  <property name="xfire" ref="xfire" />-->
  <property name="serviceBean" ref="getUserInfo" />
  <property name="serviceClass" value="com.crazycat.UserInfoInterface" />
 </bean>
 
</beans>

 

好了,重启服务器,就可以发布了。访问http://IP:端口号/工程名/services/   就可以看到了

 

2 客户端

因为我的客户端在另一个工程,所以是用动态方式获取的,(网上有很多方式的,根据自己需要选择)

 

public class UserInfoClient {

 public List getUserInfo(String arg){

   List<String> resultsList = new ArrayList<String>();
  Client client = null;
  try{
   client =new Client("http://IP:端口号/工程名/services/" + "UserInfoInterface?wsdl"));  

 Object[] results = client.invoke("getUserInfo",new Object[] {arg});
   if(results.length > 0) {
    DocumentImpl doc = (DocumentImpl)results[0];
    Document document = DocumentHelper.parseText(doc.saveXML(null));
    List<Node> uids = document.selectNodes("//ns1:string");
    for(int j = 0;j< uids.size();j++){
     Node node = uids.get(j);
     resultsList.add(node.getText());
//     System.out.println(node.getText());
    }
      }
  }catch(MalformedURLException e){
   e.printStackTrace();
  }catch(Exception e){
   e.printStackTrace();
  }
  return resultsList;

}

 

}

 

我主要想说的是里面粉色的部分,处理返回的数据,对于返回String类型的,直接去results[0]就可以了,不用解析

分享到:
评论

相关推荐

    java webService接口开发案例

    Java WebService接口开发是将Java应用程序暴露为网络服务的一种方式,允许不同系统间的数据交换和交互。本案例将深入探讨如何使用Java实现Web服务的创建、发布和调用。 一、理解WebService WebService是一种基于...

    java Webservice

    Java WebService是一种基于标准的、平台无关的通信方式,它允许不同系统间的应用程序进行交互,主要依赖于SOAP(Simple Object Access Protocol)协议和WSDL(Web Services Description Language)。本教程将带你...

    java 调用webservice的几种方法总结

    Java 调用 Webservice 的几种方法总结中,主要介绍了使用 JDK Web 服务 API、Axis 和 XFire 等方法来调用 Webservice。下面将对每种方法进行详细的介绍。 使用 JDK Web 服务 API 使用 JDK Web 服务 API 可以实现...

    java调用json参数的webservice

    Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级应用中尤为流行,尤其是在构建大型的网络应用程序方面。 JSON(JavaScript Object Notation)是一种轻量级的数据交换...

    c#调用Java webService的专题(一)

    WebService是一种基于Web的、标准化的方式,允许不同系统之间交换数据。它通常基于HTTP协议,使用XML(Extensible Markup Language)进行数据编码,遵循WSDL(Web Services Description Language)定义服务接口,...

    Java WebService入门实例

    Java WebService 是一种基于标准协议(如SOAP,WSDL)的跨平台、跨语言的通信机制,用于构建可互操作的分布式系统。本篇将详细介绍Java WebService的入门实例,包括其工作原理以及如何创建和测试一个简单的...

    delphi调用Java webservice实例

    Delphi是一款强大的Windows应用程序开发工具,而Java WebService则是一种基于标准的,跨平台的远程调用技术。下面将详细阐述这个主题。 一、Java WebService简介 Java WebService是通过SOAP(Simple Object Access ...

    java webservice

    Java WebService是一种基于标准的、平台无关的通信方式,它允许不同系统间的应用程序进行交互。在Java中,WebService主要通过SOAP(Simple Object Access Protocol)协议进行数据交换,使用WSDL(Web Services ...

    调用 java webservice 的问题

    WebService是一种支持网络服务的标准协议,允许不同应用程序之间通过HTTP或HTTPS进行通信,通常使用XML作为数据格式。它基于一系列的开放标准,包括SOAP(Simple Object Access Protocol)用于消息传输,WSDL(Web ...

    .net调用java WebService

    1. **WSDL文件的作用**:WSDL(Web Services Description Language)是一种基于XML的语言,用于描述网络服务接口。它包含了服务的抽象定义(如操作和消息)、具体的绑定细节(如网络协议和消息格式),以及如何访问...

    Java WebService 简单实例 方式一(生成类文件方式)

    - 使用 Java 接口来定义 WebService 的公共接口。 - 接口中包含的方法将被暴露为 WebService 方法。 ```java @WebService public interface HelloWorld { @WebMethod String sayHello(String name); } ``...

    java Webservice 简单实例

    在Java开发中,WebService是一种常见的用于应用程序间通信的技术。它基于标准的XML(可扩展标记语言)和WSDL(Web服务描述语言)进行数据交换,允许不同平台和语言的应用程序之间共享数据。本教程将通过一个简单的...

    Java开发WebService实例

    在IT领域,尤其是企业级应用开发中,WebService作为一种标准化的、跨平台的服务交互方式,被广泛应用于系统间的数据交换与服务调用。本文将基于给定的“Java开发WebService实例”内容,深入解析如何在Tomcat中间件...

    java注解webservice学习第一篇

    Web服务是一种基于互联网的软件应用,允许不同的系统之间交换数据和功能。常见的Web服务标准包括SOAP(简单对象访问协议)和REST(表述性状态转移)。Java中的Web服务通常使用JAX-WS(Java API for XML Web Services...

    java版WebService生成客户端和服务端的实例

    在Java世界中,WebService是一种基于XML的开放标准技术,它允许不同系统间的应用程序进行通信,跨越不同的操作系统和编程语言。本实例将详细讲解如何使用Apache Axis1.4工具来生成Java版的WebService服务端和客户端...

    Java webservice cxf客户端调用demo和服务端

    Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...

    javawebservice例子.pdf

    3. **Dynamic Proxy方式**:提供了一种灵活的方式来创建和使用Web服务,无需手动编写服务端代码,只需定义接口。 接下来,我们将分别演示DII和Dynamic Proxy两种方式创建Web服务的例子: **DII例子**: 1. 创建一...

    PB调用JAVA WEBSERVICE实例

    在企业级应用开发中,不同语言之间的互操作性是非常重要的,而Web服务提供了一种标准的方式来实现这一点。让我们深入探讨这个主题。 首先,Java Web服务(WEBSERVICE)是基于SOAP(Simple Object Access Protocol)...

    java webservice flash在domino中的使用

    在提供的压缩包文件中,"flash在domino中的使用"可能包含有关如何在Domino环境中使用Flash的详细指南,"java在domino中的使用"可能会讲解如何创建和部署Java Web服务,而"Webservice在domino中的使用"则可能涵盖了...

    java+webService+tomcat+实例

    WebService是一种基于标准的、平台无关的通信方式,允许不同的应用程序之间交换数据。Tomcat是一款轻量级的Java应用服务器,广泛用于部署Java Web应用程序,包括WebService。 在Java中实现WebService,主要依赖于...

Global site tag (gtag.js) - Google Analytics