<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無為

    無為則可為,無為則至深!

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
    之所以把數組類型在調用web service中作為參數的實現鄭重的記錄下來,實在是因為數組在j2ee web service的實現不是一件容易的問題。至少用Jbossj2ee web service實現時是這樣. 好象網上關于web service的比較深入一點的資料比較少,關于j2ee web service的資料就更少了. 這里只記錄了符合WS I BP 標準的SOAP四種消息傳遞模式中的RPC/Literal消息傳遞模式。這個請參考書籍《j2ee web service 高級編程》一書。該書也只能是參考了,只是介紹了web service的理論實現及一點jax-rpc API,并且還有蠻多印刷錯字。雖然jax-rpc API的目標之一就是為了在各種java web service實現技術中提供一個便攜的手段,然而各種j2ee服務器的web service技術還是有些差別的,這個還是造成了程序不能直接在各種j2ee服務器之間毫無修改的移植。在 apacheaxis實現中,數組作為參數傳遞根本不值一提,借助工具很方面的就可以實現。

    但是在jboss中的ws實現中確不是一件便利的事情。因為郁悶了很久,發點牢騷:)具體實現:

    ??? 作為web service服務實現的類必須實現java.rmi.Remote的接口:

    package array;

    ?

    import java.rmi.Remote;

    import java.rmi.RemoteException;

    ?

    public interface CountUser extends Remote {

    ? ?? public int countUser(User[] user) throws RemoteException;

    }

    ?

    ??? 具體實現遠程接口的類:

    package array;

    ?

    public class CountUserImpl implements CountUser {

    ??? public int countUser(User[] user){

    ??????? for(int i=0;i<user.length;i++){

    ??????????? System.out.println("name "+user[i].getName()+"? phone? "+

    ?????????????????????????????? user[i].getPhone()+ " birthday "+user[i].getBirthDay());

    ??????? }

    ??????? return user.length;

    ??? }

    ?

    }

    ?

    ? 作為數組參數傳遞的類:

    ?

    package array;

    ?

    import java.util.Date;

    ?

    public class User {

    ??? private String name;

    ??? private String phone;

    ??? private Date birthDay;

    ?

    ??? public User() {

    ?

    ??? }

    ??? public User(String name,String phone,Date birthDay){

    ??????? this.name=name;

    ??????? this.phone=phone;

    ??????? this.birthDay=birthDay;

    ??? }

    ?

    ??? public void setName(String name) {

    ??????? this.name = name;

    ??? }

    ?

    ??? public void setPhone(String phone) {

    ??????? this.phone = phone;

    ??? }

    ?

    ??? public void setBirthDay(Date birthDay) {

    ??????? this.birthDay = birthDay;

    ??? }

    ?

    ??? public String getName() {

    ? ??????return name;

    ??? }

    ?

    ??? public String getPhone() {

    ??????? return phone;

    ??? }

    ?

    ??? public Date getBirthDay() {

    ??????? return birthDay;

    ??? }

    ?

    }

    ?

    使用Jboss_Home/bin 下的wstools工具生成布署j2ee web service 必須的三個文件,jax-rpc映射文件,web服務描述器文件,以及wsdl文檔用于wstools工具的配置文件jboss-config.xml類容如下:

    <?xml version="1.0" encoding="UTF-8"?>

    <configuration xmlns="http://www.jboss.org/jbossws-tools"

    ?? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    ?? xsi:schemaLocation="http://www.jboss.org/jbossws-tools http://www.jboss.org/jbossws-tools/schema/jbossws-tool_1_0.xsd"

    ? <java-wsdl>

    ? <service? name="ServiceBeanInterface1" style="rpc"?? endpoint="array.ServiceBeanInterface1"/>

    ????? <namespaces target-namespace="http://array" type-namespace="http://array"/>

    ???? <mapping file="ServiceBeanInterface1.xml"/>

    ???? <webservices servlet-link="ServiceBeanInterface1"/>?????

    ?

    </java-wsdl>

    </configuration>

    使用 wstools -cp array.CountUser -config jboss-config.xml 命令可以生成布署web服務所需的三個文件。另外還得在web.xml文件中把CountUser接口作為servlet發布

    ? <servlet>

    ??? <display-name>CountUser Servlet</display-name>

    ??? <servlet-name>CountUser</servlet-name>

    ??? <servlet-class>array.CountUserImpl</servlet-class>

    ? </servlet>

    ? <servlet-mapping>

    ??? <servlet-name>CountUser</servlet-name>

    ??? <url-pattern>/CountUser</url-pattern>

    ? </servlet-mapping>

    ? <servlet-mapping>

    ??? <servlet-name>CountUser</servlet-name>

    ??? <url-pattern>/services/*</url-pattern>

    ? </servlet-mapping>

    僅僅是這樣倒也算很容易了,但是wstools工具并不能在映射文件中正確實現User[]的映射。因此還需要手工添加如下代碼以實現User[] xml之間的映射。???

    ??? <java-xml-type-mapping>

    ??? <java-type>array.User[]</java-type>

    ??? <root-type-qname xmlns:typeNS='http://array'>typeNS:User.Array</root-type-ame>

    ??? <qname-scope>complexType</qname-scope>

    ??? </java-xml-type-mapping>

    打包成war文件,并且布署。服務端的實現就完成了。打包的war文件下載 ?使用的Jboss版本4.04
    因為篇幅或許還有分類的原因,客戶端的實現將記錄在下一篇隨筆里 如果你想賜教或者討論,歡迎加入QQ群:30406099



    凡是有該標志的文章,都是該blog博主Caoer(草兒)原創,凡是索引、收藏
    、轉載請注明來處和原文作者。非常感謝。

    posted on 2006-11-09 12:23 草兒 閱讀(735) 評論(0)  編輯  收藏 所屬分類: 軟件構架java
    主站蜘蛛池模板: 18勿入网站免费永久| 亚洲一卡2卡3卡4卡乱码 在线| 蜜臀91精品国产免费观看| 日韩电影免费观看| 牛牛在线精品观看免费正| 亚洲人成网站18禁止| 亚洲精品资源在线| 亚洲va久久久噜噜噜久久狠狠| 亚洲av午夜成人片精品电影| 毛片高清视频在线看免费观看| 曰批全过程免费视频播放网站| 成人电影在线免费观看| 精品免费久久久久国产一区| 免费亚洲视频在线观看| 亚洲s码欧洲m码吹潮| 亚洲精品456人成在线| 亚洲AV无码国产精品色| 亚洲激情视频网站| 久久精品国产亚洲av高清漫画| 国产亚洲精品国产| 国产亚洲精品xxx| 亚洲AV综合色一区二区三区| 亚洲中文字幕无码一区二区三区| 久久乐国产精品亚洲综合| 国产亚洲精品影视在线产品| 国产亚洲欧洲Aⅴ综合一区 | 亚洲国产精品乱码一区二区 | 韩国免费A级毛片久久| 四虎成人精品国产永久免费无码| 色婷婷亚洲一区二区三区| 精品亚洲av无码一区二区柚蜜| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲AV电影天堂男人的天堂| 蜜桃传媒一区二区亚洲AV| 亚洲精品成a人在线观看☆| 亚洲AV日韩AV无码污污网站| 无套内谢孕妇毛片免费看看 | 中文字幕精品亚洲无线码二区| 国产亚洲色视频在线| 亚洲成av人影院| 亚洲短视频在线观看|