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