posts - 0,comments - 7,trackbacks - 0
ronghao100 原创 Url: http://www.ieee.org.cn/dispbbs.asp?boardID=49&ID=31051

一、软件环境

1、axis-1_2 (从apache网站下载最新axis-bin-1_2.zip解压即可)

2、Tomcat5.0 

3、JDK5.0

二、相关配置

1、在你的%TOMCAT_HOME%\common\lib下需要加入三个包 activation.jar、mail.jar、tools.jar

2、环境变量设置

  AXIS_HOME 即axis-bin-1_2.zip解压的目录(我的是在F:\soap\axis-1_2)

  AXIS_LIB   即 %AXIS_HOME%\lib

  AXISCLASSPATH 即 %AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;也就是把%AXIS_LIB%下所用JAR文件都导入

三、实验一下

  在%AXIS_HOME%\webapps下找到axis文件夹,将其整个拷贝到%TOMCAT_HOME%\webapps下,启动

Tomcat,打开浏览器访问http://localhost:8080/axis/,出现以下页面说明你配置成功了。很简单吧:)


四、发布我们的第一个程序

  第一个程序简单的返回HELLO WORLD!

HelloWorld.java

public class HelloWorld {
public String sayHello()
{
  return "HELLO WORLD!"; 

}

我们的第一种发布方式:

将HelloWorld.java拷贝到%TOMCAT_HOME%\webapps\axis下,然后将其改名为HelloWorld.jws,这样AXIS就自然将其发布了。现在写个客户端程序访问一下:

TestClient.java

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

import javax.xml.rpc.ParameterMode;

public class TestClient
{
  public static void main(String [] args) throws Exception {
    
    String endpoint = "http://localhost:" +"8080"+ "/axis/HelloWorld.jws";//指明服务所在位置

    Service service = new Service(); //创建一个Service实例,注意是必须的!
    Call   call   = (Call) service.createCall();//创建Call实例,也是必须的!

  call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call设置服务的位置

    call.setOperationName( "sayHello" );//注意方法名与HelloWorld.java中一样!!

      String res = (String) call.invoke( new Object[] {} );//返回String,没有传入参数

                System.out.println( res );
  }
}

我的测试是在jbuilder2005中,注意项目中要导入其自带的AXIS包(当然应该把其中JAR文件替换一下),可以看到程序返回了 "HELLO WORLD!"

可以看到在AXIS里发布服务其实是一件很容易的事,这是因为这个服务很简单的原因:)下面我们介绍第二种发布方式,这是常用的。

我们的第二种发布方式:

1、将HelloWorld.java编译成HelloWorld.class,放到%TOMCAT_HOME%\webapps\axis\WEB-INF\classes

    下

2、在%TOMCAT_HOME%\webapps\axis\WEB-INF下新建deploy.wsdd文件,即SOAP服务发布描述文件

  deploy.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  <service name="HelloWorld" provider="java:RPC">
    <parameter name="className" value="HelloWorld"/>
    <parameter name="allowedMethods" value="sayHello"/>
  </service>
</deployment>

在DOS下转换目录到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd

你会发现目录下多了一个server-config.wsdd文件,这就是AXIS的配置文件,以后所有的服务发布描述都会在里面找到。(当然,你可以直接修改它,不用再写deploy.wsdd)然后打开浏览器http://localhost:8080/axis/servlet/AxisServlet,你就会看到你的服务已发布

同样用客户端程序访问一下:(注意和上边的差别!!)

HelloClient.java

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

public class HelloClient
{
  public static void main(String [] args) throws Exception {

    String endpoint = "http://localhost:" +"8080"+ "/axis/services/HelloWorld";//注意!差别仅仅在这里!!

    Service service = new Service();
    Call   call   = (Call) service.createCall();
    call.setTargetEndpointAddress( new java.net.URL(endpoint) );
    call.setOperationName("sayHello" );

      String res = (String) call.invoke( new Object[] {} );

                System.out.println( res );
  }
}

接下来将会涉及到传参数、JAVABEAN对象,及AXIS的安全问题,
打开IE,可以在http://127.0.0.1:7001/axis/servlet/AxisServlet看到该服务部署到服务列表上

posted on 2007-01-31 11:24 坚持学习,每天进步一些 阅读(224) 评论(0)  编辑  收藏 所属分类: Web Service

只有注册用户登录后才能发表评论。


网站导航: