注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

是缘是情是童真

如果你用笑脸面对 你会看见别人的笑脸

 
 
 

日志

 
 

JAVA中使用axis调用.net WebService  

2011-09-13 16:02:18|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

哈,搞了大半天总算有结果了,还算不错。下面给出思路:

Axis简介
Axis是Apache组织推出的SOAP引擎,Axis项目是Apache组织著名的SOAP项目的后继项目,目前最新版本是采用Java开发的1.4版本,C++的版本正在开发之中。Axis v1.4软件包可以从http://apache.justdn.org/ws/axis/下载得到。
 
Axis的安装
应用Axis开发Web Services,你需要有一个支持Servlet的服务器引擎,比如广为人知的Tomcat。当安装好Tomcat之后,只需将下载的Axis软件包解压缩,将其中的“webapps”目录下的“axis”目录整个拷贝到Tomcat安装目录下的“webapps”目录下即可。
Axis的配置
Axis基于Java开发,可以部署于多种操作系统,使用前需要配置一系列的系统变量,在此假定你已经在本机上装好了Tomcat,需要配置的系统变量如下表所示:
CATALINA_HOME
D:\apache-tomcat-6.0.29
 
AXIS_HOME
%CATALINA_HOME%\webapps\axis

AXIS_LIB
%AXIS_HOME%\lib

AXISCLASSPATH
%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar; %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar; %AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar; %AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar

CLASSPATH 中加入:
%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar; %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar; %AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar; %AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar
 
C:\WINDOWS\system32\drivers\etc 这个目录下hosts文件配置下:192.168.1.123 webs.xxx.com

好了,下面测试一下我们的Axis吧:

启动浏览器,输入http://localhost:8080/axis/happyaxis.jsp,如果你看到如下的内容显示在网页中

Axis Happiness Page

Examining webapp configuration

。。。。。。

恭喜你,配置成功了。

 

下面奉上个人写的客户端调用Demo:

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class WebServiceTest {

 public static void main(String[] args) {
  encrypt("");
  decrypt("");
 }

 public static void encrypt(String str) {

  try {
      // WebService URL
   String service_url = "http://webs.xxx.com/Encryption/Encryption.asmx";
   Service service = new Service();
   Call call = (Call) service.createCall();
   call.setTargetEndpointAddress(new java.net.URL(service_url));
   // 设置要调用的方法
   call.setOperationName(new QName(" http://www.xxx.com/T ",
     "encrypt"));

   // 该方法需要的参数
   call.addParameter("str",
     org.apache.axis.encoding.XMLType.XSD_STRING,
     javax.xml.rpc.ParameterMode.IN);

   // 方法的返回值类型
   call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
   call.setUseSOAPAction(true);
   call.setSOAPActionURI("http://www.xxx.com/encrypt");

   // 调用该方法
   String res = (String) call.invoke(new Object[] { str });

   System.out.println(" Result:" + res.toString());
  } catch (Exception e) {
   System.err.println(e);
  }
 }

 

 public static void decrypt(String str) {

  try {
    // WebService URL
   String service_url = "http://webs.xxx.com/Encryption/Encryption.asmx";
   Service service = new Service();
   Call call = (Call) service.createCall();
   call.setTargetEndpointAddress(new java.net.URL(service_url));

   // 设置要调用的方法
   call.setOperationName(new QName(" http://www.xxx.com/T ",
     "decrypt"));

   // 该方法需要的参数
   call.addParameter("str",
     org.apache.axis.encoding.XMLType.XSD_STRING,
     javax.xml.rpc.ParameterMode.IN);

   // 方法的返回值类型
   call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
   call.setUseSOAPAction(true);
   call.setSOAPActionURI("http://www.xxx.com/decrypt");

   // 调用该方法
   String res = (String) call.invoke(new Object[] { str });
   System.out.println(" Result:" + res.toString());
  } catch (Exception e) {
   System.err.println(e);
  }
 }

}

在%AXIS_HOME%webapps下找到axis文件夹,需要加入二个包 activation.jar、mail.jar

解决办法:
1)
下载javamailjaf,解压出mail.jaractivation.jar
http://java.sun.com/products/javamail/downloads/index.html
http://java.sun.com/products/javabeans/glasgow/jaf.html#download
或者我提供了一个rar包:包含mail.jar action.jar
download
mail.jar and activation.jar
2)
mail.jaractivation.jar放到%AXIS_HOME%/WEB-INF/lib目录下

3)
.jar文件添加到%CLASSPATH%

说明:

这个是可以忽略的。不过以后构建web services都要用到的,还是添加上的好。
参考:http://www.ogsadai.org.uk/documentation/ogsadai-wsi-2.1/doc/wsi/FAQ.html
This is a warning message that can safely be ignored. It is displayed when Axis has been deployed without an optional JAR. An optional JAR is one that allows Axis to support a particular piece of functionalty but is not required for general use. Please refer to the Axis documentation for more details.

 

  评论这张
 
阅读(448)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017