加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 01:22:24 所属栏目:安全 来源:网络整理
导读:技术和规则 在构建和使用Web Service时,主要用到以下几个关键的技术和规则: 1.XML:描述数据的标准方法. 2.SOAP:表示信息交换的协议. 3.WSDL:Web服务描述语言. 4.UDDI(Universal Description,Discovery and Integration):通用描述、发现与集成,它是一种独立

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读