摘要: 這是AXIS學習筆記的最后一篇。在前面我們討論了最簡單的HelloWorld服務,客戶端并沒有向服務器端傳遞參數,現在我們來傳JavaBean。當然,也可以傳遞你自己定義的JAVA類,但那樣你必須自己創建專門的XML序列化器和反序列化器;而對JavaBean,AXIS提供了現成的序列化器。(有人說:懶惰是程序員最大的美德)
一、服務器端
1、...
閱讀全文
posted @
2007-06-12 16:25 ronghao 閱讀(5337) |
評論 (3) |
編輯 收藏
摘要: 四、使用WS-Security規范對信息進行加密與身份認證
我們打算用Handler結合WSSecurity實現Web服務安全
設想流程:用WSClientRequestHandler.java位于客戶端對客戶端發出的XML文檔進行加密 WSServerRequestHandler.ja...
閱讀全文
posted @
2007-06-12 16:20 ronghao 閱讀(2255) |
評論 (4) |
編輯 收藏
摘要: 在前面的文章中,我們實現了最簡單的AXIS服務。現在我們一起來討論一下Web服務的安全問題。
根據應用的對安全要求的級別不同,可以采用不同的方式來實現安全性,以下是目前最常用的一些實現方式(從低到高排列):
1、J2EE Web應用默認的訪問控制(數據是明文的);
2、使用a...
閱讀全文
posted @
2007-06-12 16:10 ronghao 閱讀(3941) |
評論 (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 閱讀(3144) |
評論 (1) |
編輯 收藏
一、軟件環境
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 );
}
}
posted @
2007-06-12 15:48 ronghao 閱讀(2670) |
評論 (1) |
編輯 收藏