webservice服务器端以及客户端调用的方法

    技术2024-07-14  58

    技术和规则   在构建和使用Web Service时,主要用到以下几个关键的技术和规则:   1.XML:描述数据的标准方法.   2.SOAP:表示信息交换的协议.   3.WSDL:Web服务描述语言.   4.UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。 相关   实际上,WebService的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。由此可以看出,在以下三种情况下,使用WebService会带来极大的好处。

    使用axis写webservice: 一、服务器端 1、需要的jar 将axis的相关jar文件复制到WEB-INF/lib文件夹下。这些文件包括: activation.jar axis.jar axis-ant.jar axis-schema.jar commons-discovery-0.2.jar commons-logging-1.0.4.jar jaxrpc.jar log4j-1.2.8.jar mailapi.jar saaj.jar wsdl4j-1.5.1.jar xmlsec-1.3.0.jar

    2、编写要调用的类中的方法: package com.id5.webservice; public class JavaBeanWS {  public String getJavaBeanWs(String name) {   return "hi----" + name + "----this an axis java bean web services";  } }

    3、编写web.xml 文件,在内配置axis:  <servlet>   <servlet-name>AxisServlet</servlet-name>   <servlet-class>    org.apache.axis.transport.http.AxisServlet   </servlet-class>  </servlet>  <servlet-mapping>     <servlet-name>AxisServlet</servlet-name>     <url-pattern>/services/*</url-pattern>  </servlet-mapping>

    4、创建发布webservice的配置文件server-config.wsdd :

    <deployment xmlns="http://xml.apache.org/axis/wsdd/"  xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

     <!-- 处理器 -->  <handler name="URLMapper"   type="java:org.apache.axis.handlers.http.URLMapper" />  <!-- 一个服务 -->  <!-- provider="java:RPC"  webservice是以javabean的形式提供的-->  <service name="getJavaBeanWebService" provider="java:RPC">   <!-- 指定类名 调用 webservice 的时候调用的方法所在的类 -->   <parameter name="className"    value="com.id5.webservice.JavaBeanWS" />   <!-- 类中允许访问的方法 -->   <parameter name="allowedMethod" value="getJavaBeanWs"></parameter>  </service>  <!-- 指定处理器 -->  <transport name="http">      <requestFlow>           <!-- 引用上边的 -->          <handler type="URLMapper"/>      </requestFlow>  </transport> </deployment>

    5、部署到服务器上并进行调用 :http://localhost:8080/mywebservice/services/getJavaBeanWebService?wsdl

    二、客户端: public class TestCall {  private static final String webservice_test = "http://localhost:8080/mywebservice/services/getJavaBeanWebService?wsdl";

     public static void main(String[] args) throws MalformedURLException {   TestCall testcall = new TestCall();   testcall.callSayHello();  }

     public void callSayHello() throws MalformedURLException {   Service service = new Service();   try {    Call call = (Call) service.createCall();    //设置地址    call.setTargetEndpointAddress(new java.net.URL(webservice_test));    //设置要执行的方法    call.setOperationName(new QName("http://webservice.sinosoft.com/",      "getJavaBeanWs"));    //设置要传入参数,如果没有要传入的参数,则不要写这个    call.addParameter("name", org.apache.axis.Constants.XSD_STRING,                     javax.xml.rpc.ParameterMode.IN);    //设置返回的类型    call.setReturnType(org.apache.axis.Constants.XSD_STRING);    try {     String name = "gongpeibao";     //执行,调用webservice     String ret = (String) call.invoke(new Object[]{name});     System.out.println("ret="+ret);    } catch (RemoteException e) {     System.out.println("eeee" + e);     e.printStackTrace();    }

      } catch (ServiceException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }  } }

     

     

    最新回复(0)