随笔 - 181, 文章 - 2, 评论 - 85, 引用 - 0
数据加载中……

5月27日-----axis 终于配置好了

经过了两天多的摸索,axis终于配置成功了。步骤其实很简单的,主要是关于classpath的配置。axis主页上安装向导其实写的明白了,鉴于研究Web Service的人都是有一定java基础的人,所以上面并没有详细说明关于classpath的设置。像我这样的java新手自然要走很多弯路,没办法的事情,这是学习的一个过程。

axis的配置很简单,过程如下
1. 将axis-src-1_2_1这个包解压后,将axis-1_2_1\webapps下axis的所有东西拷贝到你刚刚建立的TOMCAT的webapps下。目录结构如下:
然后查看一下你的axis的WEB-INF的lib下*.jar文件是否全,应该有8个
axis.jar
axis-ant.jar
commons-discovery-0.2.jar
commons-logging-1.0.4.jar
jaxrpc.jar
log4j-1.2.8.jar
saaj.jar
wsdl4j-1.5.1.jar
(一定看好各个文件的文件名,一会将配置CLASSPATH)
axis的安装向导还要求其他的几个.jar文件,包括xerces.jar,和mail.jar.这些都可以在Apache网站上找到/
2. 然后到axis-1_2_1目录下,找到lib文件夹,拷贝其中的activation.jar文件,到
Tomcat\webapps\axis\WEB-INF\lib,和上面的8个jar文件在一起,就OK了。
3.剩下的就是整个过程中最为关键的部分,如果弄不好你需要走很弯路的。
关于classpath 的设置,包括两部分。一. 有关Tomcat的classpath的设置,这一部分是最容易被忽视的,很多关于axis的安装的文章都没有讲。这就使你在后面遇到很多问题,首先如果这部分没有设置,即使你后面关于axis的classpath设置的完全正确,在编写客户端测试Web Service 是也会出现错误。而且这时候,你的axis已经可以运行,你写的简单的HelloWorld.jws也没什么问题,能看到相应的SOAP消息。但是你的客户端程序却出问题了,你可以正常编译,不会出现错误。但运行时会出现诸如Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/axis/client/Service此类的异常,这种错误通常是最令人痛苦的。
关于Tomcat的classpath一要注意,如果你是通过Windows安装程序安装时,这是你的系统中已经有了TOMCAT_HOME,和JAVA_HOME 环境变量,此时你要做的就是添加classpath环境变量(如果你还没有添加的话,具体做法我就不用说了,很简单的基础知识),classpath的设置如下
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(.;是必需的,它指代当前目录)
然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的(可以根据实际追加)servlet.jar追加到classpath中去,修改后的classpath如下:
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;
4.接下来就是关于axis的环境变量的设置了,向导上讲的很清楚。就把原文直接考过来

On Windows, this can be done via the following. For this document we assume that you have installed Axis in C:\axis. To store this information permanently in WinNT/2000/XP you will need to right click on "My Computer" and select "Properties". Click the "Advanced" tab and create the new environmental variables. It is often better to use WordPad to create the variable string and then paste it into the appropriate text field.

set AXIS_HOME=c:\axis
set AXIS_LIB=%AXIS_HOME%\lib
set 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
注意一点,.jar文件要与你的解压的axis目录中的文件名一致,由于版本问题,文件名可能不一致。
5 .  测试
下面是一个简单的WebService, 供测试使用
(代码是转贴,呵呵)
import java.util.*;
 
public class wsTestService
{
  String strName 
= "Ryun";
  
int intAge = 21;
  List items 
= new ArrayList();
  
  
public String getName() {
    
return strName;
   }

  
  
public int getAge() {
    
return intAge;
   }

  
  
public List getItems() {
    
return items;
   }

  }

将此文件命名为 wsTestService.jws 存放到
Tomcat的\webapp\axis\目录下
访问 http://localhost:8080/axis/wsTestService.jws, 出现 "There is a Web

Service here"即表明 Web Service 服务端程序安装完成.
开发一个 Web Service 客户端程序
建立客户端程序wsTestClient.java
以下是客户端的源程序, 用于向 Web Service Server 提交服务请求:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
 
public class wsTestClient {
  
public static void main(String args[]) {
    System.out.println(
"Start invoking");
    
try {
      String strUri 
= 

"http://localhost:8080/axis/wsTestService.jws";
      Service service 
= new Service();
      Call call 
= (Call)
      service.createCall();
      call.setTargetEndpointAddress(
new 

java.net.URL(strUri));
      call.setOperationName(
"getName");
      String ret 
= "" + call.invoke(new Object[] {});
      System.out.println(
"I am " + ret + ".");
     }

    
catch (Exception e) {
      System.err.println(e.toString());
     }

    System.out.println(
"Finished the invoking.");
    }

}
然后编译运行,如果出现问题,那可能是环境变量path,classpath配置的问题,自己查看

一下,这里就不再描述了。
C:\>cd \
C:\>javac wsTestClient.java
 
C:\>java wsTestClient
Start invoking...
I am Ryun.
Finished the invoking.
完成,再去学习,稍后总结
但这时还有一个问题,我还没有解决,关于log4j的一个warn,不知道该如何配置log4j,懒得再去找答案了。axis的相关问题搜索了两天了才有个结果,log4j的问题以后有时间再弄吧。

By Tory

posted on 2006-05-27 12:32 wsdfsdf 阅读(2087) 评论(2)  编辑 收藏 引用 所属分类: 交流心得

评论

# re: 5月27日-----axis 终于配置好了   回复  更多评论   

AXISCLASSPATH不加到classpath里面去吗?

我是java初学者,已经配置好了classpath结果还是要报错
Exception in thread "main" java.lang.NoClassDefFoundError: QuoteClient

我的测试文件是在http://www.ncsa.uiuc.edu/people/ramonw/ws_demo/axisdemo.html上下载的,编译已经通过了.

我的classpath=.;%AXISCLASSPATH%;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\lib\servlet.jar;

每个包文件我都有确认,但是还是不行,请指教.
2007-05-06 14:19 | snail

# re: 5月27日-----axis 终于配置好了   回复  更多评论   

通过了和你的结果一样
你知道吗就因为环境设置我高调试的时候一直没好使
看到你的这篇文章真是太神奇了
真的很感谢你
2008-07-16 16:47 | 淘淘

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理