posts - 193,  comments - 520,  trackbacks - 0
 
     摘要: 这是AXIS学习笔记的最后一篇。在前面我们讨论了最简单的HelloWorld服务,客户端并没有向服务器端传递参数,现在我们来传JavaBean。当然,也可以传递你自己定义的JAVA类,但那样你必须自己创建专门的XML序列化器和反序列化器;而对JavaBean,AXIS提供了现成的序列化器。(有人说:懒惰是程序员最大的美德)    一、服务器端   1、...  阅读全文
posted @ 2007-06-12 16:25 ronghao 阅读(5322) | 评论 (3)编辑 收藏
     摘要: 四、使用WS-Security规范对信息进行加密与身份认证     我们打算用Handler结合WSSecurity实现Web服务安全     设想流程:用WSClientRequestHandler.java位于客户端对客户端发出的XML文档进行加密  WSServerRequestHandler.ja...  阅读全文
posted @ 2007-06-12 16:20 ronghao 阅读(2240) | 评论 (4)编辑 收藏
     摘要: 在前面的文章中,我们实现了最简单的AXIS服务。现在我们一起来讨论一下Web服务的安全问题。 根据应用的对安全要求的级别不同,可以采用不同的方式来实现安全性,以下是目前最常用的一些实现方式(从低到高排列):     1、J2EE Web应用默认的访问控制(数据是明文的);      2、使用a...  阅读全文
posted @ 2007-06-12 16:10 ronghao 阅读(3926) | 评论 (4)编辑 收藏
     摘要: 原文作者: 陈亚强 原文链接:http://www.ibm.com/developerworks/cn/webservices/ws-handler/index.html 高级软件工程师, 北京华园天一科技有限公司 2003 年 8 月  一、Handler的基本概念 J2EE Web 服务中的H...  阅读全文
posted @ 2007-06-12 16:01 ronghao 阅读(3126) | 评论 (1)编辑 收藏

一、软件环境

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

 2
Tomcat5.0 

 3
JDK5.0

二、相关配置

 1
、在你的%TOMCAT_HOME%\common\lib下需要加入三个包 activation.jarmail.jartools.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 );
   }
}

posted @ 2007-06-12 15:48 ronghao 阅读(2658) | 评论 (1)编辑 收藏
仅列出标题
共39页: First 上一页 21 22 23 24 25 26 27 28 29 下一页 Last 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

关注工作流和企业业务流程改进。现就职于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

常用链接

留言簿(38)

随笔分类

随笔档案

文章分类

文章档案

常去的网站

搜索

  •  

最新评论

阅读排行榜

评论排行榜