国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Hessian學(xué)習(xí)/使用總結(jié)
       前陣子頭兒讓寫一個(gè)webservice。說(shuō)真的以前沒(méi)有寫過(guò),還真是摸不著頭腦。后來(lái)頭兒就把hessian的地址給發(fā)了過(guò)來(lái)。給我指了一個(gè)方向。再學(xué)習(xí)2天后基本把項(xiàng)目要求的實(shí)現(xiàn)出來(lái)了。對(duì)于這種輕量級(jí)的東西還是很好學(xué)習(xí)也很容易上手的。
       其實(shí)剛看到的時(shí)候也是自己先上網(wǎng)找了很多篇?jiǎng)e人的學(xué)習(xí)筆記。基本寫的都差不多,不過(guò)挺通俗易懂的。后來(lái)看官網(wǎng)的例子發(fā)現(xiàn)其實(shí)也很容易懂。
       官方地址:http://hessian.caucho.com/
       下載的jar包也在這里。我使用的是hessian-3.2.0-src.jar。事實(shí)證明3.1.5和3.1.6都有很多的bug不推薦使用。
       其實(shí)hessian很強(qiáng)大,但是我用的時(shí)候只用到了它很少的一部分功能,所以我也就說(shuō)說(shuō)這點(diǎn)吧。
       還是先定義一個(gè)供客戶端和服務(wù)器端使用的接口,里邊放上應(yīng)用需要的方法。
----------------------------------------------------------------------------------------------------------      
       public interface IBasic {
               //返回用戶的姓名,為了測(cè)試返回字符串
               public String getUserName();
               //返回一個(gè)用戶的對(duì)象,用來(lái)測(cè)試返回對(duì)象
               public User getUserInfo();
               //添加新用戶
               public boolean AddUser(User u);
       }
---------------------------------------------------------------------------------------------------------- 
       至于User就是一個(gè)標(biāo)準(zhǔn)的JAVABEAN。這里需要注意的一點(diǎn)是。因?yàn)樵谶h(yuǎn)程調(diào)用過(guò)程中兩邊都需要用到這個(gè)bean。所以這個(gè)bean一定要保持一樣。繼承序列的時(shí)候最好都一樣的號(hào)。
       然后來(lái)說(shuō)一下服務(wù)器端的程序。這里要實(shí)現(xiàn)所有接口中的方法。
----------------------------------------------------------------------------------------------------------      
       public class BasicService implements IBasic {
               //根據(jù)自己的邏輯來(lái)返回一個(gè)字符串給客戶端
               public String getUesrName() {
                   String name = "hanxiaoyue";
                   return name;
               }
               //這里就可以獲取一個(gè)User然后返回給客戶端
               public User getUserInfo() {
                   User u = new User();
                   u.setUsername("hanxiaoyue");
                   u.setAge(22);
                   return u;
               }
               //這里就可以通過(guò)用戶傳遞過(guò)來(lái)的參數(shù)來(lái)進(jìn)行操作
               public boolean AddUser(User u) {
                   String name = u.getUsername();
                   boolean res = false;
                   if(name != null && !name.equals("")) {
                       res = true;
                   }
                   return res;
               }
       }
---------------------------------------------------------------------------------------------------------- 
 
        ok,服務(wù)器端寫好后就是客戶端了。如果想在服務(wù)器端測(cè)試的話就寫一個(gè)測(cè)試類就ok。其實(shí)跟在客戶端唯一不同的就是地址不一樣。
----------------------------------------------------------------------------------------------------------      
       public class BasicClient {
               public static void main() throw Exception {
                       //這里的端口號(hào)貌似是必須加上的。我當(dāng)時(shí)加上就報(bào)錯(cuò)了。后邊的TestHessian是項(xiàng)目名稱。test/usertest就是servlet的名字了。在后邊xml里配置一下就ok。
                       String url = http://localhost:80/TestHessian/test/usertest;
                       HessianProxyFactory factory = new HessianProxyFactory();
                       //通過(guò)這里構(gòu)建一個(gè)hessian的代理工廠來(lái)根據(jù)url和接口的類來(lái)返回給客戶端??蛻舳司涂梢允褂媒涌谥卸x的這些方法了。
                       IBasic basic = (IBasic)factory.create(IBasic.class,url);
                       User u = basic.getUserInfo();
                       User u2  = new User();
                       u2.setUsername("hanxiaoyue");
                       boolean res = basic.AddUser(u2);
                       String username = basic.getUserName();
               }
       }
---------------------------------------------------------------------------------------------------------- 
 
        最后我們來(lái)說(shuō)說(shuō)在web.xml里是如何配置的。其實(shí)很簡(jiǎn)單。
---------------------------------------------------------------------------------------------------------- 
    <servlet>
        <servlet-name>usertest<servlet-name>
        <servlet-class>com.caucho.hessian.server.HessianServlet<servlet-class>
        <init-param>
            <param-name>home-class<param-name> 
            <param-value>study.hessian.BasicService<param-value>
        </init-param>
        <init-param>
            <param-name>home-api<param-name>
            <param-value>study.hessian.IBasic<param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>usertest<servlet-name>
        <url-pattern>/test/usertest<url-pattern>
    <servlet-mapping>
---------------------------------------------------------------------------------------------------------- 
 
        ok,到這里基本一套流程就都下來(lái)了。其實(shí)在實(shí)際用的時(shí)候比這個(gè)稍微復(fù)雜了一點(diǎn)。但是大概的流程都是一樣的。這里特別要說(shuō)的就是之前提到的3.1.5和3.1.6的bug。我發(fā)現(xiàn)的最嚴(yán)重的一個(gè)就是這兩個(gè)版本在返回對(duì)象時(shí)候會(huì)出現(xiàn)異常。而且目前無(wú)法解決。所以選擇了使用bug修改過(guò)后的3.2.0。網(wǎng)上很多關(guān)于hessian的文章沒(méi)有提到這個(gè)事情是因?yàn)槟切┪恼卤容^早,寫的時(shí)候3.1.5和3.1.6都沒(méi)有出來(lái)。
        目前項(xiàng)目中使用hessian的部分還是比較穩(wěn)定的。以后有新的總結(jié)會(huì)及時(shí)更新。
 
 
補(bǔ)充:
---------------------------------------------------------------------------------------------------------- 2008-10-17
為什么服務(wù)器端是List對(duì)象,到了客戶端就是hashmap了呢?????
原因:我的list在上傳前保存的是對(duì)象,經(jīng)測(cè)試也不是map型,但到服務(wù)端從list獲取的變成了map型,經(jīng)分析是因?yàn)槟夸浗Y(jié)構(gòu)的原因,如果客戶端和服務(wù)器端package的名字不一樣的話,就會(huì)造成服務(wù)端反序列化時(shí)出現(xiàn)問(wèn)題。所以在使用List的時(shí)候一定要讓bean的package的名稱在客戶端和服務(wù)器端是一致的。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
hessian教程
webservice之hessian
用spirng和hessian構(gòu)建分布式應(yīng)用(遠(yuǎn)程接口)的方法[原] - Spring -...
Hessian入門(與Spring集成)
spring和hessian整合
Hessian
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服