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