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 阅读(1158) | 评论 (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 阅读(990) | 评论 (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 阅读(192) | 评论 (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 阅读(143) | 评论 (0)编辑 收藏

2008年5月3日

     摘要:   阅读全文

posted @ 2008-05-03 17:46 linlin yu 阅读(102) | 评论 (0)编辑 收藏

2008年1月13日

 

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

posted @ 2008-01-13 11:15 linlin yu 阅读(245) | 评论 (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 阅读(292) | 评论 (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 阅读(1797) | 评论 (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 阅读(264) | 评论 (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 阅读(161) | 评论 (0)编辑 收藏