linlinyu

          linlinyu
          posts - 0, comments - 4, trackbacks - 0, articles - 15

          2008年10月9日

          • 開始之前
            學習本文內容之前,你至少要能用JAVA、EJB和Flex寫出Helloword這樣簡單的應用程序,并且下載安裝了Pomer和運行過PomerUserIndex.mxml,但不一定要了解blazedslcds。如果閱讀過Pomer簡介Pomer下載與安裝Pomer架構介紹 有助于學習本文。

          • 概述
            本文主要演示通過blazeds/lcds訪問遠程EJB,Pomer框架封裝了blazeds/lcds的訪問式,用戶無須添加配置文件,只須在EJBDestinationRegister注冊即可將Java對象發布成blazeds/lcds的遠程對象(RemoteObject),進行遠程訪問。


          • 新建EJB項目并增加一個無狀態的SessionBean
            在Myeclipse中如何新建和布署EJB不在本講解范圍,用戶可參照MyEclipse相關幫助文檔。
            用戶自己建一個HelloEJB的SessionBean,并增加public String hello(String name)方法; 確認HelloEJB可以被遠程訪問


          • 注冊EJB
            在cn.org.pomer.flex.remoting.services.EJBDestinationRegister的構造函數增加EJB注冊信息。
            復制內容到剪貼板
            代碼:
            public EJBDestinationRegister() {
            super();
            this.list = new ArrayList<EJBDestination>();

            //add here
            add("helloEJB", "HelloServicesImpl/remote");
            }
          • 新建Flex應用HelloEJB.mxml
            復制內容到剪貼板
            代碼:
            <?xml version="1.0" encoding="utf-8"?>
            <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
            <mx:Script>
            <![CDATA[
            import mx.controls.Alert;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
            private function helloClick():void{
            helloSpring.hello("pomer");
            }
            private function helloEJBFault(e:FaultEvent):void{
            Alert.show(e.fault.message.toString());
            }
            private function helloEJBResult(e:ResultEvent):void{
            Alert.show(e.result as String);
            }
            ]]>
            </mx:Script>

            <mx:RemoteObject endpoint="../messagebroker/amf"
            id="helloEJB"
            fault="helloEJBFault(event)"
            result="helloEJBResult(event)"
            destination="helloEJB" showBusyCursor="true"/>


            <mx:Button label="hello" click="helloClick();"/>
            </mx:Application>
          • 布署運行

            • 啟動Tomcat,日志出現如下標記,布署成功



            • 右擊HelloJava.mxml->Run as->Flex application



          • 原理分析
            查看WEB-INF\flex\services- config.xml,EJBRemotingDestinationBootstrapService類從 EJBDestinationRegister類得到所有要遠程訪問的Ejb,自動加入服務中。EJBFactory根據 EJBDestinationRegister提供的內容自動創建遠程對象。

          posted @ 2008-10-09 21:32 linlin yu 閱讀(1177) | 評論 (1)編輯 收藏

          2008年6月1日

          <?xml version="1.0" encoding="UTF-8"?>
          <persistence xmlns="http://java.sun.com/xml/ns/persistence"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://java.sun.com/xml/ns/persistence
              http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"

              version
          ="1.0">

              
          <persistence-unit name="EJBServerPU" transaction-type="JTA">
                  
          <jta-data-source>java:/MySqlDS</jta-data-source>
                  
          <properties>
                      
          <property name="hibernate.hbm2ddl.auto" value="none" />
                      
          <property name="hibernate.dialect"
                          value
          ="org.hibernate.dialect.MySQLDialect" />
                      
          <property name="hibernate.show_sql" value="true" />
                      
          <!-- use a file system based index -->
                      
          <property name="hibernate.search.default.directory_provider"
                          value
          ="org.hibernate.search.store.FSDirectoryProvider" />
                      
          <!-- directory where the indexes will be stored -->
                      
          <property name="hibernate.search.default.indexBase"
                          value
          ="C:\\bb\\indexs" />

                      
          <property name="hibernate.ejb.event.post-insert"
                          value
          ="org.hibernate.search.event.FullTextIndexEventListener" />
                      
          <property name="hibernate.ejb.event.post-update"
                          value
          ="org.hibernate.search.event.FullTextIndexEventListener" />
                      
          <property name="hibernate.ejb.event.post-delete"
                          value
          ="org.hibernate.search.event.FullTextIndexEventListener" />



                  
          </properties>
              
          </persistence-unit>

          </persistence>

          posted @ 2008-06-01 16:14 linlin yu 閱讀(1012) | 評論 (0)編輯 收藏

          2008年5月21日

          cd ${jboss.server.home.dir}/conf

          keytool -genkey -dname "CN=localhost, OU=localhost, O=localhost,L=localhost, S=State, C=Country Code" -alias "LC Cert" -keypass 123456 -keystore keystorename.keystore

          keytool -export -alias "LC Cert" -file LC_cert.cer -keystore keystorename.keystore

          keytool -import -file LC_cert.cer -keystore C:\java\jdk1.6.0_04\jre\lib\security\cacerts

          keytool -printcert -v -file D:\Adobe\LiveCycle8\jboss\server\all\conf\LC_cert.cer

          keytool -delete -alias "LC Cert" -keystore keystorename.keystore

          keytool -delete -alias mykey -keystore C:\java\jdk1.6.0_04\jre\lib\security\cacerts


          <Connector port="8443" address="${jboss.bind.address}"
              maxThreads="100" minSpareThreads="5" maxSpareThreads="15"
              scheme="https" secure="true" clientAuth="false"
              keystoreFile="${jboss.server.home.dir}/conf/keystorename.keystore"
              keystorePass="123456" sslProtocol = "TLS" URIEncoding="UTF-8"/>

          posted @ 2008-05-21 16:45 linlin yu 閱讀(211) | 評論 (0)編輯 收藏

          2008年5月5日

          • Hello world

          create or replace procedure helloWorld AS
          begin
            DBMS_OUTPUT.PUT_LINE(
          'HELLO.');
          end;

          運行
          sql>set serveroutput on;
          sql>exec helloWorld ;
          • 帶參數的存儲過程

          create or replace procedure MYPROC(ID NUMBERIS
          SURNAME 
          VARCHAR2(30);
          BEGIN
              
          SELECT SURNAME INTO SURNAME FROM EMPLOYEE WHERE EMP_ID = ID;
              DBMS_OUTPUT.put_line(SURNAME);
          END;

          • 帶返回值的存儲過程

          CREATE OR REPLACE PROCEDURE MYPROC2(ID IN NUMBER, EMP_ID OUT NUMBER, SURNAME OUT VARCHAR2)
          IS
          BEGIN
                 
          SELECT EMP_ID, SURNAME INTO EMP_ID,SURNAME FROM EMPLOYEE WHERE EMP_ID=ID;
          END;

          運行
          SQL> VARIABLE SURNAME VARCHAR2;
          SQL> VARIABLE EMP_ID NUMBER;
          SQL> EXEC MYPROC2(50,:EMP_ID,:SURNAME);

          posted @ 2008-05-05 14:53 linlin yu 閱讀(163) | 評論 (0)編輯 收藏

          2008年5月3日

               摘要:   閱讀全文

          posted @ 2008-05-03 17:46 linlin yu 閱讀(118) | 評論 (0)編輯 收藏

          2008年1月13日

           

          select 'create public synonym ' || table_name || ' for ' || table_name || ';' from user_tables

          posted @ 2008-01-13 11:15 linlin yu 閱讀(262) | 評論 (0)編輯 收藏

          2007年12月28日

          com.mycompany.util
          com.mycompany.myproject
          com.mycompany.myproject.util
          com.mycompany.myproject.model
          com.mycompany.myproject.dao
          com.mycompany.myproject.dao.ejb/com.mycompany.myproject.dao.hibernate
          com.mycompany.myproject.service
          com.mycompany.myproject.service.impl
          com.mycompany.myproject.webapp.action
          com.mycompany.myproject.webapp.filter
          com.mycompany.myproject.webapp.listener
          com.mycompany.myproject.webapp.taglib

          posted @ 2007-12-28 22:58 linlin yu 閱讀(311) | 評論 (0)編輯 收藏

          2007年12月20日

          1,配置文件
          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE struts PUBLIC
                  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
                  "http://struts.apache.org/dtds/struts-2.0.dtd"
          >
          <struts>
              
          <package name="example" namespace="/example"
                  extends
          ="struts-default">
                  
          <action name="outputXml"  method="outxml" class="example.OutputXml">
                      
          <result name="xmlMessage" type="plaintext"></result>
                  
          </action>
              
          </package>
          </struts>

          2,java代碼
          package example;

          import java.io.PrintWriter;

          import javax.servlet.http.HttpServletResponse;

          import org.apache.struts2.ServletActionContext;

          import com.opensymphony.xwork2.ActionSupport;

          public class OutputXml extends ActionSupport {
              
          public void outxml() throws Exception {
                  HttpServletResponse response 
          = ServletActionContext.getResponse();
                  response.setContentType(
          "text/xml ");
                  PrintWriter pw 
          = response.getWriter();
                  pw.print(
          "<cc>cccccc</cc>");
              }

          }

          posted @ 2007-12-20 23:04 linlin yu 閱讀(1814) | 評論 (1)編輯 收藏

          2007年12月3日

          本文最初發表《程序員》雜志第三期,現將全文貼上,內容已經過編輯修飾了很多:)

          什么是Firebug

          從事了數年的Web開發工作,越來越覺得現在對WEB開發有了更高的要求。要寫出漂亮的HTML代碼;要編寫精致的CSS樣式表展示每個頁面模塊;要調試javascript給頁面增加一些更活潑的要素;要使用Ajax給用戶帶來更好的體驗。一個優秀的WEB開發人員需要顧及更多層面,才能交出一份同樣優秀的作業。為幫助廣大正處于Web2.0洪流中的開發人員,在這里為大家介紹一款輕巧靈活的輔助開發工具。

          Firebug是Firefox下的一款開發類插件,現屬于Firefox的五星級強力推薦插件之一。它集HTML查看和編輯、Javascript控制臺、網絡狀況監視器于一體,是開發JavaScript、CSS、HTML和Ajax的得力助手。Firebug如同一把精巧的瑞士軍刀,從各個不同的角度剖析Web頁面內部的細節層面,給Web開發者帶來很大的便利。這是一款讓人愛不釋手的插件,如果你以前沒有接觸過它,也許在閱讀本文之后,會有一試的欲望。筆者在撰寫此文的時候,正逢Firebug發布1.0正式版,這不能不說是種巧合。

          應用

          Firebug插件雖然功能強大,但是它已經和Firefox瀏覽器無縫地結合在一起,使用簡單直觀。如果你擔心它會占用太多的系統資源,也可以方便地啟用/關閉這個插件,甚至針對特定的站點開啟這個插件。

          在安裝好插件之后,先用Firefox瀏覽器打開需要測試的頁面,然后點擊右下方的綠色按鈕或使用快捷鍵F12喚出Firebug插件,它會將當前頁面分成上下兩個框架,如圖1所示。

          圖1:Firebug插件展開圖示
          firebug插件展開圖示
          從圖1中看到,Firebug有6個主要的Tab按鈕,下文將主要介紹介紹這幾方面的功能。

          Console HTML CSS Script Dom Net
          控制臺 Html查看器 Css查看器 腳本條時期 Dom查看器 網絡狀況監視

          Console 控制臺

          控制臺能夠顯示當前頁面中的javascript錯誤以及警告,并提示出錯的文件和行號,方便調試,這些錯誤提示比起瀏覽器本身提供的錯誤提示更加詳細且具有參考價值。而且在調試Ajax應用的時候也是特別有用,你能夠在控制臺里看到每一個XMLHttpRequests請求post出去的參數、URL,http頭以及回饋的內容,原本似乎在幕后黑匣子里運作的程序被清清楚楚地展示在你面前。

          象C shell或Python shell一樣,你還能在控制臺中查看變量內容,直接運行javascript語句,就算是大段的javascript程序也能夠正確運行并拿到運行期的信息。

          控制臺還有個重要的作用就是查看腳本的log, 從前你也許習慣了使用alert來打印變量,但是Firebug給我們帶來了一個新朋友 —— console.log, 最簡單的打印日志的語法是這樣的:

          CODE:
          1. console.log("hello world")

          如果你有一堆參數需要組合在一起輸出,可以寫成這樣:

          CODE:
          1. console.log(2,4,6,8,"foo",bar).

          Firebug的日志輸出有多種可選的格式以及語法,甚至可以定制彩色輸出,比起單調的alert,顯然更加方便,限于篇幅,這里不做詳細說明,但是有志于提高debug效率的讀者,可以到Firebug的官方站點(見附錄)查看更詳細的教程。

          圖2: 在控制臺里調試javascript
          在控制臺里調試javascript

          查看和修改HTML

          第一次看到Firebug強大的HTML代碼查看器,就覺得它與眾不同,相比于Firefox自帶的HTML查看器,它的功能強大了許多。 HTML

          首先你看到的是已經經過格式化的HTML代碼,它有清晰的層次,你能夠方便地分辨出每一個標簽之間的從屬并行關系,標簽的折疊功能能夠幫助你集中精力分析代碼。源代碼上方還標記出了DOM的層次,如圖3所示,它清楚地列出了一個hml元素的parent、child以及root元素,配合Firebug自帶的CSS查看器使用,會給div+css頁面分析編寫帶來很大的好處。你還可以在HTML查看器中直接修改HTML源代碼,并在瀏覽器中第一時間看到修改后的效果,光憑這一點就會讓許多頁面設計師死心塌地地成為Firebug的粉絲了。

          有時候頁面中的javascript會根據用戶的動作如鼠標的onmouseover來動態改變一些HTML元素的樣式表或背景色,HTML查看器會將頁面上改變的內容也抓下來,并以黃色高亮標記,讓網頁的暗箱操作徹底成為歷史。

          利用Inspect檢查功能,我們還可以用鼠標在頁面中直接選擇一些區塊,查看相應的HTML源代碼和CSS樣式表,真正的做到所見即所得,如果你使用了外部編輯器修改了當前網頁,可以點擊Firebug的reload圖片重新載入網頁,它會繼續跟蹤你之前用Inspect選中的區塊,方便調試。

          圖3::HTML查看器
          HTML查看器

          CSS調試

          Firebug的CSS調試器是專為網頁設計師們量身定做的。

          如今的網頁設計言必稱div+css,如果你是用table套出來的HTML頁面,就得按這規矩重構一遍,否則顯得你不夠時髦!用div做出來的頁面的確能精簡HTML代碼,HTML標簽減肥的結果就是CSS樣式表的編寫成了頁面制作的重頭戲。Firebug的CSS查看器不僅自下向上列出每一個CSS樣式表的從屬繼承關系,還列出了每一個樣式在哪個樣式文件中定義。你可以在這個查看器中直接添加、修改、刪除一些CSS樣式表屬性,并在當前頁面中直接看到修改后的結果。

          一個典型的應用就是頁面中的一個區塊位置顯得有些不太恰當,它需要挪動幾個象素。這時候用CSS調試工具可以輕易編輯它的位置——你可以根據需要隨意挪動象素。
          如圖4中正在修改一個區塊的背景色。

          提示:如果你正在學習CSS樣式表的應用,但是總記不住常用的樣式表有哪些值,可以嘗試在CSS調試器中選中一個樣式表屬性,然后用上下方向鍵來改變它的值,它會把可能的值一個個遍歷給你看。

          圖4: CSS查看器,能夠直接修改樣式表
          圖4: CSS查看器,能夠直接修改樣式表

          可視化的CSS尺標

          我們可以利用Firebug來查看頁面中某一區塊的CSS樣式表,如果進一步展開右側Layout tab的話,它會以標尺的形式將當前區塊占用的面積清楚地標識出來,精確到象素,更讓人驚訝的是,你能夠在這個可視化的界面中直接修改各象素的值,頁面上區塊的位置就會隨改動而變化。在頁面中某些元素出現錯位或者面積超出預料值時,該功能能夠提供有效的幫助,你可以籍此分析offset、margin、padding、size之間的關系,從而找出解決問題的辦法。

          圖5:Firebug中的CSS標尺
          圖5:Firebug中的CSS標尺

          網絡狀況監視器

          也許有一天,你的老板或者客戶找到你,抱怨你制作的網頁速度奇慢,你該如何應對?你或許會說這可能是網絡問題,或者是電腦配置問題,或者是程序太慢,或者直說是他們的人品問題?不管怎么說,最后你可能被要求去解決這個有多種可能的問題。

          網絡狀況監視器能幫你解決這個棘手問題。Firebug的網絡監視器同樣是功能強大的,它能將頁面中的CSS、javascript以及網頁中引用的圖片載入所消耗的時間以矩狀圖呈現出來,也許在這里你能一把揪出拖慢了你的網頁的元兇,進而對網頁進行調優,最后老板滿意客戶歡喜,你的飯碗也因此而牢固。

          網絡監視器還有一些其它細節功能,比如預覽圖片,查看每一個外部文件甚至是xmlHttpRequests請求的http頭等等。

          圖6:網絡狀況監視器
          圖6:網絡狀況監視器

          Javascript調試器

          這是一個很不錯的javascript腳本調試器,占用空間不大,但是單步調試、設置斷點、變量查看窗口一個不少。正所謂麻雀雖小,五臟俱全。

          如果你有一個網站已經建成,然而它的javascript有性能上的問題或者不是太完美,可以通過面板上的Profile來統計每段腳本運行的時間,查看到底是哪些語句執行時間過長,一步步排除問題。

          圖7:javascript調試器
          圖7:javascript調試器

          DOM查看器

          DOM(Document Object Model)里頭包含了大量的Object以及函數、事件,在從前,你要想從中查到需要的內容,絕非易事,這好比你去了一個巨大的圖書館,想要找到幾本名字不太確切的小書,眾多的選擇會讓你無所適從。而使用Firebug的DOM查看器卻能方便地瀏覽DOM的內部結構,幫助你快速定位DOM對象。雙擊一個DOM對象,就能夠編輯它的變量或值,編輯的同時,你可能會發現它還有自動完成功能,當你輸入document.get之后,按下tab鍵就能補齊為document.getElementById,非常方便。如果你認為補齊得不夠理想,按下shift+tab又會恢復原狀。用了Firebug的DOM查看器,你的javascript從此找到了驅使的對象,Web開發也許就成了一件樂事。

          圖8: Dom查看器
          圖8: Dom查看器

          小結

          Firebug插件提供了一整套web開發所必需的工具。從HTML的編寫,到CSS樣式表的美化調優,以及用javascript腳本開發,亦或是Ajax應用,Firebug插件都會成為你的得力助手。所謂工欲善其事,必先利其器。在Web2.0的時代,言必稱Ajax,動輒就是用戶體驗提升,如果把Firebug工具用好,必能讓你如虎添翼,將HTML、CSS、javascript整理得服服帖帖,從此成為web開發中的專家級人物。

          Firebug的中文含義是螢火蟲,作者是Joe Hewitt,官方網頁 http://www.getfirebug.com
          Firefox亦即火狐瀏覽器,是近年來撼動IE瀏覽器市場占有率的一支強大力量,要不是它的出現,我想有生之年說不定也看不到IE 7的發布了,官方網頁 http://www.firefox.com

          作者: volcano 發表于5月 15, 2007 at 9:54 am

          版權信息: 可以任意轉載, 轉載時請務必以超鏈接形式標明文章原始出處作者信息及此聲明

          posted @ 2007-12-03 16:50 linlin yu 閱讀(291) | 評論 (2)編輯 收藏


          <META HTTP-EQUIV="Refresh" CONTENT="0;URL=test.txt>

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <html>
          <head>
              
          <META HTTP-EQUIV="Refresh" CONTENT="0;URL=test.txt">
          </head>

          <body>
          <p>Loading </p>
          </body>
          </html>

          posted @ 2007-12-03 10:15 linlin yu 閱讀(180) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 藁城市| 金堂县| 静乐县| 益阳市| 九江县| 阿瓦提县| 重庆市| 怀远县| 德令哈市| 娄烦县| 上犹县| 浦北县| 景宁| 鄂伦春自治旗| 司法| 二连浩特市| 如皋市| 信阳市| 文登市| 类乌齐县| 岳池县| 叶城县| 阳泉市| 奉节县| 华阴市| 胶州市| 长岛县| 温宿县| 剑阁县| 黎城县| 宜城市| 图片| 五家渠市| 娄烦县| 资溪县| 西林县| 和硕县| 襄垣县| 东港市| 望奎县| 桑植县|