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

时间:2022-04-23 13:42:56

技术和规则
  在构建和使用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();
  }
 }
}