随笔-77  评论-5  文章-2  trackbacks-0
 

目前使用oracle adf 框架 10.1.3 版本

1 adf 的源代码 (交付给apache 的)


http://people.apache.org/~bdudney/apache-drop.zip

是从http://www.orablogs.com/jjacobi/ 上面看到了

 

2. 其实我把 adf-faces-api  adf-faces-impl.jar 用jad 解码出来了,反正许多编译不过,里面的代码版本和apache的版本还不是一致的

 

3. apache 的myface 正在改adf-faces 的代码,可以去他们的svn上取,取出来的结构和原来oracle的区别很大。

怀疑下一个版本的jdeveloper ,如果基于myface的adf 作表示层的话,兼容性很难保证。

 

4。 adf 空间里面的类层次比较复杂,oracle原来是使用uix机制,为了遵守jsf规范使用jsf绘制的时候,很多处理还是有uix概念。我怀疑如果重新设计的话,adf 完全可以简单得多。不过目前oracle adf 控件同时支持pda,desktop,

是了不起的,虽然没有尝试过他的pda版本

 

5 adf-facs-impl.jar!META-INF/faces-config.xml 定义了UIComponent 和Render的对应关系。

因此如果要修改adf控件的绘制器时,可以干掉jar包下的faces-config.xml,在自己的代码路径建立 /META-INF/faces-config.xml  ,修改这个文件来修改控件对应的绘制器

 

唉,混了这么多年,还在表示层打滚,应该看看工作流了。

 

 

 

 

 


文章来源:http://stocknewbie.bokee.com/viewdiary.12098419.html
posted @ 2009-05-01 10:52 huohuo 阅读(639) | 评论 (0)编辑 收藏

上周折腾了几天,oracle workflow 2.6.3没有装好,这周和zg交流了一下,发现我没有看installation guide ,他的中间层装对了,我的数据库装对了,今天终于整合出来了,虽然他是linux,我是winxp

 

经验如下:

workflowserver 2.6.3 依赖 oracle db,oracle db companion cd.oracle httpserver standalone 9.04,

 

1.装10g dbserver ,oracle 10g db server 字符集选用中文的UTF-8编码方式,不能用zhs16gbk,因为
工作流配置程序WorkflowCA.jar中写死了zhs对应的字符集是utf8,要出现中文,就得用utf8


2.安装dbserver 的伴侣盘oracle 10 g companion cd ,安装第一项.装了这个才有一些什么owa_util之类的东西,大概是oracle web agent吧

 

3.装完dbserver之后就可以装workflowserver 的服务器部分,装到10g服务器下

 

4.装完之后,数据库菜单下面有个 workflow configuration assistant,按照安装指南设置一下参数。


5. oracle application server 里面的 httpserver ,需要放到不在数据库的那个oracle_home,我装在d:\oracleApache. 这个httpserver ,将一些请求,转成对数据库的pl/sql procedure的请求,由plsql代码生成网页

 

(其实伴侣盘里面也是有oracle http server ,我刚开始没有配置好,也许也是可以的,后来就选zg装成功的as中的httpserver)

 

6.安装workflowserver 的middletier 到 httpserver所在的oraclehome

 

需要修改dads.conf

<Location /pls/wf>
  SetHandler pls_handler
  Order deny,allow
  Allow from all
  AllowOverride None
  PlsqlDatabaseConnectString 10.16.33.178:1521:ORCL
  PlsqlAuthenticationMode Basic
  PlsqlDefaultPage wfa_html.home

  PlsqlNLSLanguage      "SIMPLIFIED CHINESE_CHINA.UTF8"
</Location>

 

7. windows xp 下启动httpserver时,

a.网上邻居-》本地连接-》属性-》高级—》Wins标签-》去掉启用LMhosts查询
前的勾就可以了.

b 控制面板-》windows防火墙-》高级标签-》网络连接设置-》设置-》勾选安
全Web服务器(HTTPS)"选项,按两次"确定"即可

c。关闭一些vpn之类的软件,一些网络程序,如skype 时才能正常启动httpserver

启动httpserver失败时,请查看
D:\oraApache\Apache\Apache\logs\error_log

和D:\oraApache\opmn\logs\HttpServer~1


如果D:\oraApache\Apache\Apache\logs\error_log显示
[Tue Jul 18 16:27:33 2006] [crit] (10022)提供了一个无效的参数。:
setup_inherited_listeners: WSASocket failed to open the inherited socket.

表示端口被占用,检查是否启动了其他特别的vpn软件,或者软件占用了apache server的端口,使用有其他网络程序干扰.
netstat -a 和netstat -ab

8.访问页面 http://localhost:7777/pls/wf/wfa_html.home

 

9.后记: 其实这个版本有bug,在有个脚本里面有 select to_number('10g') from ....

会提示错误,windows下面,这个错误似乎不影响,可以一直装下去,linux下面似乎要改掉。


文章来源:http://stocknewbie.bokee.com/viewdiary.12103536.html
posted @ 2009-05-01 10:52 huohuo 阅读(1038) | 评论 (0)编辑 收藏

今天看cctv-12的道德观察,里面讲一些百姓英雄。在桂林发生一起抢包事件,一个女孩背着包在街上走,此时一个小偷从后面冲过来,小偷抢了包就走,女孩在后面追,大叫抓小偷,追了一阵,女孩体力不支,越追越远。此时前面有两个女孩,正在散步,小偷从她们前面冲过去了,这是其中一个叫邓树花,听到抓小偷,于是追了出去,小偷本来以为甩掉了失主,打开包的拉链一看,就一个老式的三星旧手机,不值什么钱,这个时候后面有又人追来,赶紧跑,后面的mm紧追不舍,他就把包扔了,心想不会追吧,结果女孩仍然在追,(女孩事后说,我当时好像看见他丢了点什么,但不知道是包),女孩追上去,抓住了小偷的衣领。小偷掏出刀:放了我吧,再不放,我就捅死你,女孩当时一直不肯放手(画外音说不管小偷怎样求饶,邓树花就不肯放) 邓树花后来说:我当时看到刀,吓懵了,都忘记自己还抓着他的衣领。小偷往她手上割了一刀,她当时感觉麻麻的,没有放手,又割了两刀,没有用,一刀捅在手臂。邓树花没有力气了,就拉不住小偷,摔到在地上,小偷逃走了,这是邓树花大叫抓小偷,几个在附近的酒吧门口的人发现了,两个送邓树花去了医院,三个追小偷去了(他们说女人都抓小偷,我们怎么能不追呢),追了一阵,前面也有人拦住小偷,小偷拿刀示威,同时求饶,要他们放了他,此时围住他的人说:你如果就是偷东西还罢了,还拿刀伤人,一定不能放,最后搏斗,抓住小偷,一人负伤。

我和lp看了觉得好玩,这位女英雄很真实,很有趣。

 


文章来源:http://stocknewbie.bokee.com/viewdiary.13204052.html
posted @ 2009-05-01 10:52 huohuo 阅读(106) | 评论 (0)编辑 收藏
     摘要:    DHTML,Table标签,固定行头,固定列头列   <html> <head> <!--固定行列头,曲滨200608--> <style type="text/css"> <!-- body,table, td, a { font:9pt; }   /...  阅读全文
posted @ 2009-05-01 10:52 huohuo 阅读(409) | 评论 (0)编辑 收藏

最近刚结婚,我妈来了,丈母娘来了,这几天,发现自己很傻。以前以为我妈是很直爽的人,最近也发现妈妈也是有点精明的。岳母更是非常了得的人。 老婆一直以为岳父已经比较糊涂,头脑不清楚,岳母也不是那么精明了。这次来了,才知道,岳父其实也很精的。我们年轻一代,其实不如他们,具体事情就不说了。(老婆说,我这口气,好像是以前认为比他们精明,其实老婆以为岳父母糊涂,就是自己以为自己清楚)。

具体事情就不说了,记录以下以前看到的一个段子

 

My Father

When I was:
Four years old: My daddy can do anything.
Five years old: My daddy knows a whole lot.
Six years old: My dad is smarter than your dad.
Eight years old: My dad doesn't know exactly everything.
Ten years old: In the olden days, when my dad grew up, things were sure different.
Twelve years old: Oh, well, naturally, Dad doesn't know anything about that. He is too old to remember his childhood.
Fourteen years old: Don't pay any attention to my dad. He is so old-fashioned.
Twenty-one years old: Him? My Lord, he's hopelessly out of date.
Twenty-five years old: Dad knows about it, but then he should, because he has been around so long.
Thirty years old: Maybe we should ask Dad what he thinks. After all, he's had a lot of experience.
Thirty-five years old: I'm not doing a single thing until I talk to Dad.
Forty years old: I wonder how Dad would have handled it. He was so wise.
Fifty years old: I'd give anything if Dad were here now so I could talk this over with him. Too bad I didn't appreciate how smart he was. I could have learned a lot from him.

Writer Unknown

中文翻译:

我的爸爸

当我四岁的时候:爸爸可以做任何事。
当我五岁的时候:爸爸知道的很多。
当我六岁的时候:我爸爸比你爸爸聪明。
当我八岁的时候:爸爸并不是知道每一件事。
当我十岁的时候:在爸爸成长的旧日里,事情和现在完全不同。
当我十二岁的时候:哦,很显然,爸爸对于那件事什么也不知道。他太老了,回忆不起自己的童年了。
当我十四岁的时候:别管我爸爸。他太守旧了。
当我二十一岁的时候:他?上帝,他是无可救药地过时了。
当我二十五岁的时候:爸爸对此了解,但是这是他应该了解的,因为他已经经历了这么多。
当我三十岁的时候:也许我们该问问爸爸他是怎么想的。毕竟他有很多经验。
当我三十五岁的时候:除非我和爸爸谈谈,否则我不能做任何事。
当我四十岁的时候:我想知道爸爸会怎样处理这件事。他是如此明智。
当我五十岁的时候:如果爸爸在这,我会把所有的东西都给他。太遗憾了,我没有意识到他是多么明智。我本来能从他身上学到更多

 


文章来源:http://stocknewbie.bokee.com/viewdiary.13391801.html
posted @ 2009-05-01 10:52 huohuo 阅读(111) | 评论 (0)编辑 收藏

最近做性能测试,使用jprofile + microsoft web stress tool  测tomcat上的网页.

做了个网页例子,和.net对比速度,发现速度比不过.net

 

用jprofile 跟踪多并发情况,发现在

bean:write 在写整数和日期类型时,会找格式,并且从properties中找不同语言版本的格式.于是会访问

WriteTag.retrieveFormatString

  TagUtils.getInstance().message

       PropertyMessageResource.getMessage(Locale locale, String key)

 

PropertyMessageResource.getMessage(Locale locale, String key) 中有个synchronized 块,这里导致了代码的等待时间过长.

    


文章来源:http://stocknewbie.bokee.com/viewdiary.15201750.html
posted @ 2009-05-01 10:52 huohuo 阅读(155) | 评论 (0)编辑 收藏

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

<project name="cobertura.examples.basic" default="coverage" basedir=".">

 <description>
    Cobertura - http://cobertura.sourceforge.net/
    Copyright (C) 2003 jcoverage ltd.
    Copyright (C) 2005 Mark Doliner &lt;thekingant@users.sourceforge.net&gt;
    Cobertura is licensed under the GNU General Public License
    Cobertura comes with ABSOLUTELY NO WARRANTY
    </description>

 
 <property name="build.dir" value="${basedir}/build"/>
 <!-- 需要测试的代码生成的代码路径-->
 <property name="classes.dir" value="${build.dir}/classes"/>

 <!-- 为需要测试的代码生成的对应的测量类,用于测量覆盖率-->
 <property name="instrumented.dir" value="${build.dir}/instrumented-classes"/>

 
 <!-- 单元测试的代码,这部分代码不生成覆盖率数据,因此和待测试代码要分开-->
 <property name="test.classes.dir" value="${build.dir}/test-classes"/>
 
 <!-- 所有报告的路径-->
 <property name="reports.dir" value="${build.dir}/reports"/>

 <!-- junit 生成两种测试报告的路径,xml和html-->
 <property name="reports.xml.dir" value="${reports.dir}/junit-xml"/>
 <property name="reports.html.dir" value="${reports.dir}/junit-html"/>
 
 <!-- cobertura生成的两种测试覆盖吕的报告,xml和html-->
 <property name="coverage.xml.dir" value="${reports.dir}/cobertura-xml"/>
 <property name="coverage.html.dir" value="${reports.dir}/cobertura-html"/>
 
 
 <property name="src.dir" value="${basedir}/src" />
 <!--测试代码的路径-->
 <property name="test.dir" value="${basedir}/test" />

 
 <path id="cobertura.classpath">
  <fileset dir="${basedir}">
   <include name="lib/unittest/*.jar" />
  </fileset>
 </path>

 <taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>

 <target name="init">
  <mkdir dir="${build.dir}" />
  <mkdir dir="${classes.dir}" />
  <mkdir dir="${test.classes.dir}" />
  <mkdir dir="${instrumented.dir}" />
  <mkdir dir="${reports.xml.dir}" />
  <mkdir dir="${reports.html.dir}" />
  <mkdir dir="${coverage.xml.dir}" />
  <mkdir dir="${coverage.html.dir}" />
 </target>

 <target name="compile" depends="init">
  <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="yes">
   <classpath refid="cobertura.classpath" />
  </javac>
 </target>
 
 
 <target name="compiletest" depends="compile">
  <javac srcdir="${test.dir}" destdir="${test.classes.dir}" debug="yes">
   <classpath location="${classes.dir}"/>
   <classpath refid="cobertura.classpath" />
  </javac>
 </target>

 <target name="instrument" depends="init,compile">
  <!--
   Remove the coverage data file and any old instrumentation.
  -->
  <delete file="cobertura.ser"/>
  <delete dir="${instrumented.dir}" />

  <!--
   Instrument the application classes, writing the
   instrumented classes into ${build.instrumented.dir}.
  -->
  <cobertura-instrument todir="${instrumented.dir}">
   <!--
    The following line causes instrument to ignore any
    source line containing a reference to log4j, for the
    purposes of coverage reporting.
   -->
   <ignore regex="org.apache.log4j.*" />

   <fileset dir="${classes.dir}">
    <!--
     Instrument all the application classes, but
     don't instrument the test classes.
    -->
    <include name="**/*.class" />
    <exclude name="**/*Test.class" />
   </fileset>
  </cobertura-instrument>
 </target>

 <target name="test" depends="init,compiletest">
  <junit fork="yes" dir="${basedir}" haltonerror="no" failureProperty="test.failed">
   <!--
    Note the classpath order: instrumented classes are before the
    original (uninstrumented) classes.  This is important.
   -->
   <classpath location="${instrumented.dir}" />
   <classpath location="${classes.dir}" />
   <classpath location="${test.classes.dir}" />
   <!--
    The instrumented classes reference classes used by the
    Cobertura runtime, so Cobertura and its dependencies
    must be on your classpath.
   -->
   <classpath refid="cobertura.classpath" />

   <formatter type="xml" />
   <test name="${testcase}" todir="${reports.xml.dir}" if="testcase" />
   <batchtest todir="${reports.xml.dir}" unless="testcase">
    <fileset dir="${test.dir}">
     <include name="**/*Test.java" />
    </fileset>
   </batchtest>
  </junit>

  <junitreport >
   <fileset dir="${reports.xml.dir}">
    <include name="TEST-*.xml" />
   </fileset>
   <report format="frames" todir="${reports.html.dir}" />
  </junitreport>
 </target>

 <target name="coverage-check">
  <cobertura-check branchrate="34" totallinerate="100" />
 </target>

 <target name="coverage-report">
  <!--
   Generate an XML file containing the coverage data using
   the "srcdir" attribute.
  -->
  <cobertura-report srcdir="${src.dir}" destdir="${coverage.xml.dir}" format="xml" />
 </target>

 <target name="alternate-coverage-report">
  <!--
   Generate a series of HTML files containing the coverage
   data in a user-readable form using nested source filesets.
  -->
  <cobertura-report destdir="${coverage.html.dir}">
   <fileset dir="${src.dir}">
    <include name="**/*.java"/>
   </fileset>
  </cobertura-report>
 </target>

 <target name="clean" description="Remove all files created by the build/test process.">
  <delete dir="${build.dir}" />
  <delete dir="${classes.dir}" />
  <delete dir="${instrumented.dir}" />
  <delete dir="${reports.dir}" />
  <delete file="cobertura.log" />
  <delete file="cobertura.ser" />
 </target>

 <target name="coverage" depends="clean,compile,instrument,test,coverage-report,alternate-coverage-report" description="Compile, instrument ourself, run the tests and generate JUnit and coverage reports."/>

</project>


文章来源:http://stocknewbie.bokee.com/viewdiary.15201790.html
posted @ 2009-05-01 10:52 huohuo 阅读(668) | 评论 (0)编辑 收藏

select level, d1.dept_id,d1.dept_code,sys_connect_by_path(dept_code,'/') path from zte_fbp_depts d1
start with  d1.dept_id=12
connect by prior d1.dept_id= d1.parent_dept_id


文章来源:http://stocknewbie.bokee.com/viewdiary.16533973.html
posted @ 2009-05-01 10:52 huohuo 阅读(148) | 评论 (0)编辑 收藏

性能测试经验总结
1.要有信心
2.要有稳定,干净的环境,要停掉服务器上不必要的进程和服务

3.要在检查资源是否正常释放了,
内存是否存在泄漏,内存的不断增长,也会影响请求的相应时间
数据库连接是否在使用后得到释放.
可以查看对象的分配状况

要检查查询的时候是将所有的数据查出来了还是只查了一页数据

4.连接池的配置,可以分配足够初始连接,同时配置没有连接时的等待时间,要保证始终是取到连接的
免得测出的是假相.

给出一个配置的例子
 <bean id="dataSource" class="com.zte.platform.db.FolDataSource"
       destroy-method="close">
   <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
 <property name="url" value=""/>
 <property name="username" value=""/>
 <property name="password" value=""/>
   <property name="initialSize" value="50" />
   <property name="maxActive" value="200" />
   <property name="maxWait" value="-1"/>
   <property name="maxIdle" value="100"/>
   <property name="removeAbandoned" value="true"/>
   <property name="removeAbandonedTimeout" value="30000"/>
   <property name="logAbandoned" value="true"/>
 </bean>

5 要用profile工具,判断在多并发情况下,时间的分配状况,抓住主要矛盾,解决最影响性能的地方

6.服务器需要配置好,对内存和线程都需要配置.
    tomcat配置
    <Connector
port="8088"               maxHttpHeaderSize="8192"
               maxThreads="100" minSpareThreads="100" maxSpareThreads="450"
               enableLookups="false" redirectPort="8443" acceptCount="300"
               connectionTimeout="20000" disableUploadTimeout="true" />

内存配置:
这次测试只配置了java vm,  -Xms1024M -Xmx1024M


有人推荐这样配置:
JVM_ARGS= -Xms1408M -Xmx1408M -XX:MaxPermSize=96M -XX:NewSize=500M -XX:MaxNewSize=500M -Xss128k -XX:+UseConcMarkSweepGC -XX:+UseParNewGC


7.测试脚本中不能带session标识,如http://..../app/perftest.jsp;jsessionid=D68FC8BDDB954F33AD2626D67553EC8E
需要去掉 ;jsessionid=D68FC8BDDB954F33AD2626D67553EC8E ,因为带sessionid会导致测试结果是多个线程访问一个用户的会话.
实际应用中是一个用户一个会话一个线程

8 日志分析,分析日志中出现的异常,异常发生的时候,往往性能会降低,也会引发失败事务.

9. 和其他系统集成了,要先和其他系统分开进行测试,达标一个再集成进来,将问题局部化定位.

10.最好调优人员学会使用 loadrunner测试工具,先自己使用loadrunner测试通过再给测试人员,提高效率

 

 


 


文章来源:http://stocknewbie.bokee.com/viewdiary.17160571.html
posted @ 2009-05-01 10:52 huohuo 阅读(115) | 评论 (0)编辑 收藏

还缺少一个onchange处理,使用正则表达式的处理方式,

以下是限制文字的输入
<style>
 INPUT.num_text
 {
  imme-mode:disabled;
  onkeydown: expression(onkeydown=function ()
  {
   var   k=window.event.keyCode;  
   if(
   k==46||k==8||k==189||k==109||k==190||k==110|| k>=48 && k<=57
   ||k>=96 && k<=105||k>=37 && k<=40 )
   {
    return true;
   }
   else if (k==13)
   {
    window.event.keyCode = 9;
    
    return true;
   }

   else{
    
      return false;
   } 
  });


 }

 

</style>

 

<form>
       <input type="text"   class="num_text"  />

    
</form>


文章来源:http://stocknewbie.bokee.com/viewdiary.18663505.html
posted @ 2009-05-01 10:52 huohuo 阅读(126) | 评论 (0)编辑 收藏
仅列出标题
共5页: 上一页 1 2 3 4 5 下一页