<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
    主站蜘蛛池模板: 亚洲国产综合在线| 99热这里只有精品免费播放| 曰批免费视频播放在线看片二| 本免费AV无码专区一区| 香蕉成人免费看片视频app下载| 50岁老女人的毛片免费观看| AV片在线观看免费| 亚洲午夜福利精品久久| 亚洲国产精品国自产电影| 亚洲国产精品免费观看| 日本精品久久久久久久久免费| 国产精品免费高清在线观看| 日本三级2019在线观看免费| 亚洲成AV人网址| 亚洲网站在线播放| 四虎永久在线精品免费一区二区| 久久国产乱子免费精品| 四虎精品亚洲一区二区三区| 亚洲欧洲日产国码www| www在线观看播放免费视频日本| 88av免费观看| 亚洲无码高清在线观看| 精品亚洲成A人无码成A在线观看 | 69国产精品视频免费| 日韩精品无码人妻免费视频| 久久亚洲国产精品一区二区| 亚洲人成色777777精品| 免费黄网站在线观看| 全部免费毛片免费播放| 亚洲av永久综合在线观看尤物| 三年在线观看免费观看完整版中文| 成人影片麻豆国产影片免费观看 | 国产jizzjizz视频全部免费| 亚洲AV日韩AV高潮无码专区| 一级做a爰片久久毛片免费陪 | 亚洲国产a∨无码中文777| 九九精品国产亚洲AV日韩| 亚洲一级免费视频| 亚洲精品无码永久中文字幕| 黄网站色成年片大免费高清 | 免费在线看污视频|