`

将Java程序转换为Webservice

    博客分类:
  • java
阅读更多
1、选择要转换的java文件,生成class
2、写wsdd
3、发布
  
剩下的就只有调用了wsdl2java
  
  我原来的系统是CICS的,对后台封装了一层,现在用webservice再封装一层,前台页面,控制,数据传输,数据处理统统都可以分开了,爽
  
  //以下是从网上找的关于AXIS的入门教程
  
  一、Axis安装 1、环境 J2SE SDK 1.3 or 1.4: 我使用 1.4.2 Servlet Container: 我使用的Tomcat 5.0
  
  2、到 http://ws.apache.org/Axis/网站下载Axis安装包
  
  3、解压缩安装包,将Axis_UNZIP_PATH\Axis-version\webapps下的Axis包拷贝到TOMCAT_HOME\webapps\下,以下约定Axis_HOME为该TOMCAT_HOME\webapps\Axis目录
  
  4、启动tomcat,访问http://localhost:8080/Axis 检查安装是否成功
  
  5、以上步骤执行成功,可以开发webservice例子了
  
  Axis支持三种web service的部署和开发,分别为:
  
  1、Dynamic Invocation Interface ( DII)
  
  2、Stubs方式
  
  3、Dynamic Proxy方式
  
  二、编写DII(Dynamic Invocation Interface )方式web服务
  
  1.编写服务端程序HelloClient
  
  public class HelloClient
  {
  public String getName(String name)
  {
  return "hello "+name;
  }
  }
  
  2、将源码拷贝到Axis_HOME下,重命名为 HelloClient.jws
  
  3、访问连接http://localhost:8080/Axis/HelloClient.jws?wsdl,页面显示Axis自动生成的wsdl
  
  4、编写访问服务的客户端 TestHelloClient.java
  
  import org.apache.Axis.client.Call;
  import org.apache.Axis.client.Service;
  import javax.xml.namespace.QName;
  import javax.xml.rpc.ServiceException;
  import java.net.MalformedURLException;
  import java.rmi.RemoteException;
  
  public class SayHelloClient2
  {
  public static void main(String[] args)
  {
  try
  {
  String endpoint =
  "http://localhost:8080/Axis/HelloClient.jws";
  
  Service service = new Service();
  Call call = null;
  
  call = (Call) service.createCall();
  
  call.setOperationName(new QName(
  "http://localhost:8080/Axis/HelloClient.jws",
  "getName"));
  call.setTargetEndpointAddress
  (new java.net.URL(endpoint));
  
  String ret = (String) call.invoke(new Object[]
  {"zhangsan"});
  System.out.println("return value is " + ret);
  }
  catch (Exception ex)
  {
  ex.printStackTrace();
  }
  }
  }
  
  三、编写Dynamic Proxy方式访问服务
  
  1、编写部署服务端程序,同上边DII方式,本次仍使用上边部署的HelloClient
  
  2、编写代理接口
  
  public interface HelloClientInterface
  extends java.rmi.Remote
  {
  public String getName(String name)
  throws java.rmi.RemoteException;
  }
  
  3、编写并执行客户端程序TestHelloClient.java
  
  import javax.xml.rpc.Service;
  import javax.xml.rpc.ServiceFactory;
  import java.net.URL;
  import javax.xml.namespace.QName;
  
  public class TestHelloClient
  {
  public static void main(String[] args)
  {
  try
  {
  String wsdlUrl =
  "http://localhost:8080/Axis/HelloClient.jws?wsdl";
  String nameSpaceUri =
  "http://localhost:8080/Axis/HelloClient.jws";
  String serviceName = "HelloClientService";
  String portName = "HelloClient";
  
  ServiceFactory serviceFactory =
  ServiceFactory.newInstance();
  Service afService =
  serviceFactory.createService(new URL(wsdlUrl),
  new QName(nameSpaceUri, serviceName));
  HelloClientInterface proxy = (HelloClientInterface)
  afService.getPort(new QName(
  nameSpaceUri, portName),
  HelloClientInterface.class);
  System.out.println
  ("return value is "+proxy.getName("john") ) ;
  }catch(Exception ex)
  {
  ex.printStackTrace() ;
  }
  }
  }
  
  四、编写wsdd发布web服务,编写stub client访问web服务
  
  1、编写服务端程序server,SayHello.java,编译server.SayHello.java
  package server;
  public class SayHello
  {
  public String getName(String name)
  {
  return "hello "+name;
  }
  }
  
  2.编写LogHandler.java
  import org.apache.Axis.AxisFault;
  import org.apache.Axis.Handler;
  import org.apache.Axis.MessageContext;
  import org.apache.Axis.handlers.BasicHandler;
  
  import java.util.Date;
  
  public class LogHandler
      extends BasicHandler
  {
  public void invoke
  (MessageContext msgContext)
  throws AxisFault
  {
  
  try {
  Handler serviceHandler
  = msgContext.getService();
  
  Integer numAccesses =
  (Integer)serviceHandler.getOption("accesses");
  if (numAccesses == null)
  numAccesses = new Integer(0);
  numAccesses = new Integer
  (numAccesses.intValue() + 1);
  Date date = new Date();
  String result =
  date + ": service " +
  msgContext.getTargetService() +
  " accessed " + numAccesses + " time(s).";
  serviceHandler.setOption
  ("accesses", numAccesses);
  System.out.println(result);
  } catch (Exception e)
  {
  throw AxisFault.makeFault(e);
  }
  }
  }
  
  3、编写wsdd文件
  
  deploy.wsdd
    "http://xml.apache.org/Axis/wsdd/"
  xmlns:java=
  "http://xml.apache.org/Axis/wsdd/providers/java">
  
    provider="java:RPC">
  
  
  
    value="server.SayHello"/>
    value="*"/>
  
  
  
  3、将编译后的文件拷贝到Axis_HOME/WEB-INF/classes下,如:D:\tomcat\webapps\Axis\WEB-INF\classes
  
  4、发布服务:
  
  java org.apache.Axis.client.AdminClient deploy.wsdd
  
  5、生成client stub文件
  
  a:方式1
  
  将SayHello.java拷贝到Axis_HOME/下,重命名为SayHello.jws,
  
  执行下面的命令生存client stub
  
  java org.apache.Axis.wsdl.WSDL2Java
  -p client http://localhost:8080
  /Axis/services/SayHello.jws?wsdl
  
  b:方式2
  
  执行如下命令生成SayHello.wsdl
  
  java org.apache.Axis.wsdl.Java2WSDL
  -oSayHello.wsdl -lhttp://localhost:8080
  /Axis/services/SayHello -nsayhello server.SayHello
  
  执行如下命令生成client stub
  
  java org.apache.Axis.wsdl.WSDL2Java
  SayHello.wsdl -p client
  
  生成的stub client文件列表为:
  
  1.SayHello.java
  
  2.SayHelloService.java。
  
  3.SayHelloServiceLocator.java
  
  4.SayHelloSoapBindingStub.java
  
  6、编写客户端程序,编译并执行
  
  public class SayHelloClient
  {
  public static void main(String[] args)
  {
  try
  {
  SayHelloService service = new client.
  SayHelloServiceLocator();
  client.SayHello_PortType
  client = service.getSayHello();
  String retValue=client.getName("zhangsan");
  System.out.println(retValue);
  }
  catch (Exception e)
  {
  System.err.println
  ("Execution failed. Exception: " + e);
  }
  }
  }
  
  您也可以写server-config.wsdd
  
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  
  
  
    value="org.apache.axis.attachments.AttachmentsImpl"/>
分享到:
评论

相关推荐

    3步把您的JAVA程序转换为WEBSERVICE

    ### 3步骤将JAVA程序转换为WEBSERVICE 在当今高度互联的世界中,Web服务扮演着连接不同系统、平台和应用程序的重要角色。Java作为一种广泛使用的编程语言,在开发可互操作的Web服务方面拥有强大的能力。本文将详细...

    java调用json参数的webservice

    2. 使用诸如net.sf.json JSONObject类(一个流行的Java库,用于处理JSON数据)来将JSON格式字符串转换为JSON对象。转换后,服务端可以通过指定的键(key)来获取JSON对象中的值。 3. 在Java客户端,调用WebService...

    java 利用webservice传输文件

    通过JACOB,Java程序可以利用这些功能,例如,将接收到的文件数据保存到本地磁盘。 2. **数据转换**:如果文件是以特定格式(如二进制或特定文本格式)传输的,JACOB可能用于将这些数据转换为COM组件可以理解的格式...

    Java调用php的webservice

    由于PHP默认编码为ISO-8859-1,而Java客户端默认编码可能为GBK,因此需要对中文进行编码转换,避免出现乱码。 #### 四、总结 通过以上步骤,我们可以实现Java客户端调用PHP Webservice服务的功能。整个过程涉及到...

    普通java访问c# webService

    确保正确地将这些jar包添加到你的项目类路径中,以便于Java程序能够正确运行。 此外,注意在Java中处理与C#的互操作时可能会遇到类型转换的问题,因为C#和Java的数据类型不完全相同。例如,C#的DateTime在Java中...

    java+webService+tomcat+实例

    然后,通过JAX-WS(Java API for XML Web Services)或Apache CXF等工具,我们可以将这个Java类转换为一个SOAP服务。生成的WSDL文件可以被客户端用来发现和调用服务。 接下来,我们将这个WebService部署到Tomcat...

    JAVA调用webservice并解析xml

    6. **处理结果**:根据业务需求,对解析出的数据进行处理,如转换为Java对象、存储到数据库或展示给用户。 这个例子中的"soap2"可能是项目中的一个具体示例,它可能包含了一个完成上述步骤的Java类或测试用例。测试...

    webservice之使用jaxb把xml转换Object或把对象转换成xml文件

    2. 序列化XML:使用`Marshaller`接口将Java对象转换为XML文档。例如: ```java JAXBContext jaxbContext = JAXBContext.newInstance(User.class); Marshaller marshaller = jaxbContext.createMarshaller(); ...

    java生成二维码webservice

    其核心功能是将各种类型的数据,如文本、URL、联系人信息等,转换为二维码图案。ZXing的Java端提供了API,使得开发者可以轻松地在Java应用中集成二维码生成功能。这个Webservice就是利用了ZXing的这些功能,创建了一...

    java调用webservice接口方法.rar

    - **处理响应**:接收并解析返回的SOAP响应,通常是XML格式,然后将其转换为Java对象。 6. **异常处理** 在调用WebService过程中可能会遇到网络问题、格式错误等问题,因此需要适当的异常处理代码来捕获并处理...

    调用 java webservice 的问题

    以下将详细解析这一过程中的关键知识点,包括WebService的架构原理、工具选择(如Axis2)、数据类型转换、命名空间处理、以及具体的代码示例分析。 ### WebService架构原理 WebService是一种支持网络服务的标准...

    java调用webservice接口方法

    它允许Java开发者将Java类转换为SOAP服务,也可以将SOAP消息转换为可执行的Java方法调用。以下是如何使用Axis进行Java调用WebService接口的步骤: 1. **创建WebService客户端**: 首先,你需要获取服务的WSDL文档。...

    java和.net的webservice调用介绍

    开发者可以使用JAXB(Java Architecture for XML Binding)将Java对象转换为XML,反之亦然。 - 使用WSDL文件,Java开发者可以通过Wsimport工具自动生成客户端代理类,这些类提供了与服务交互的方法。 - 例如,通过...

    webservice获取List案例

    4. **JAXB**:JAXB是Java SE中的一部分,它提供了一种将Java对象转换为XML文档,以及将XML文档转换回Java对象的机制。在处理复杂数据结构,如包含泛型List的对象时,JAXB可以通过注解或XML绑定文件来定义转换规则。 ...

    java webservice教程

    5. **JAXB(Java Architecture for XML Binding)**:JAXB用于将Java对象转换为XML,以及将XML数据解析回Java对象,是Web服务数据交换的重要工具。 6. **部署和测试**:理解如何将Web服务部署到应用服务器(如...

    JAVA的WebService支持

    Java的Web服务(WebService)是一种基于开放标准的互联网通信协议,它允许不同系统之间的应用程序进行交互,不受平台或编程语言的限制。Java提供了强大的WebService支持,主要通过SOAP(Simple Object Access ...

    JSON返回值格式的WebService样例

    在大多数编程语言中,都有现成的库或框架支持JSON序列化,例如在Java中我们可以使用Jackson或Gson库,在Python中可以使用json模块,将数据对象转换成JSON字符串。 例如,假设我们有一个用户表,包含id、name和email...

    java axis调用第三方webservice程序demo

    在实际应用中,我们可能需要将Java对象转化为XML以便于传递给Webservice。这通常可以通过使用JAXB(Java Architecture for XML Binding)或DOM(Document Object Model)等技术实现。同样,从Webservice返回的XML...

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

    1. 生成客户端代理:CXF的WSDL2Java工具可以将服务端的WSDL(Web Service Description Language)文件转换为Java客户端代码,生成服务代理类。 2. 创建服务代理实例:通过代理类,客户端可以创建服务的实例,就像...

    JAVA自带实现webservice.docx

    在Java世界中,Web服务(Web Service)是一种用于应用程序之间通信的标准协议,它允许不同系统间的组件通过网络进行互操作。Java自带的JAX-WS(Java API for XML Web Services)框架提供了创建、部署和消费Web服务的...

Global site tag (gtag.js) - Google Analytics