在web dynpro7.1 引用extenal lib

来源:互联网 发布:群控软件 编辑:程序博客网 时间:2024/06/02 00:08

在web dynpro7.1中使用Hibernate

1. 简介

在CE7.1中使用Hibernate跟在7.0中使用基本类似。第一步要建一个lib,用于存放jar包;第二步要建一个j2ee的工程,用于发布jar包;第三步建使用Hibernate的工程,如web dynpro工程。下面是详细说明,以及一些抓图。

2. 第一步建lib工程

1. 创建lib工程(注意:创建的是local的DC)

 

图X 新建Local的DC

 

图X 新建Local的lib包


2. 将非Hibernate的包(如:hep_tdm_hibernate.jar、deepSOFTcom METHOD.jar)拷贝到libraries目录下,然后添加到public part下。Public part有两个:libCom(类型:COMPILATION)、libAss(类型:ASSEMBLY)。

 s

 

图X 将lib包添加到Public Part

 

 d

图X  Public Part设置状况

 

 


3. 第二步建J2EE工程

1. 新建J2EE工程

 d

 

图X  新建Loacl的J2EE

 d

 

图X  新建Loacl的J2EE

 


2. 设置J2EE工程属性

 d

 

图X  设置J2EE工程的属性(钩上Sap Application Library Container项)

 

3. 添加Used DC

 d

 

图X  添加Used DC

 d

 

图X  添加Used DC后设置(libAss和libCom的Build Time项都要钩上)

 

4. 新建public part(appCom类型:COMPILATION、appAss类型:ASSEMBLY)

d 

 

图X  J2EE工程新建pablic part

 

5. J2EE工程打包以及部署。将Hibernate包手动加入到demo.sap.com~apptesthib.ear文件中

 d

 

图X  Build工程后生成的ear文件

d 

 

图X 将存放Hibernate的lib添加到ear文件中(之后才可以部署)

 

 d

 

图X  lib文件夹下Hibernate包情况

 

4. 第三步建web dynpro调用工程

1. 建Local的web dynpro工程DC

 d

图X  新建Local的Web Dynpro工程

 

2. 添加引用。需要添加lib工程和J2EE工程(如果不添加lib工程,build时build不过去;如果不添加J2EE工程,运行的时候找不到Hibernate)。

 d

 

图X  在Used DC中添加lib和j2ee的public part(两个DC属性设置一样)

 

 d

图X  设置属性(所有Public part的Build Time项都要钩上)

3. 使用Hibernate

现在就可以使用Hibernate了,下面是一段调用例子

try{

    HibernateDao myDao = new HibernateDao();

    String hSql = "from TdmAudiInfo order by itemNo desc";

    List list = myDao.hqlQuery(hSql, null, 0, 5);

   

    if(list==null || list.size()==0)

        wdComponentAPI.getMessageManager().reportWarning("no record");

    else{

        for(int i=0; i<list.size(); i++){

            TdmAudiInfo obj = (TdmAudiInfo)list.get(i);

            //********************************************

            //使用Hibernate对象;

            //********************************************

        }

    }   

}catch(Exception ex){

    ex.printStackTrace();

}

 

4. 性能感受

d 

 

图X  从数据中查询10000条记录并显示

机器配置:后台查询的表有43个字段,字段定义基本是VARCHAR2(254)。数据库是Oracle10g,存于一台普通的pc服务器(两核,3.5G内存)。7.1CE服务器(WAS)是在另一台PC机器上(P4,2G内存)。

当查询10000条数据时,用时11秒。时间大部分是用在was服务器读数据库上(此时读的是所有列,显示到前台时只有6列)。Table没有分页,10000条数据完全显示,点击时,响应速度1秒多一点,感觉还可以。

 

5. 使用感受

在Web Dynpro7.1中使用Hibernate,感觉还是比较好用的。性能方面,因为hibernate要创建大量的线程,所以每次部署完J2EE工程之后最好能重启一下WAS,否则可能会报下面的错误:

{0}#1#java.lang.OutOfMemoryError: unable to create new native thread

       at java.lang.Thread.start0(Native Method)

       at java.lang.Thread.start(Thread.java:704)

       at net.sf.ehcache.store.DiskStore.<init>(DiskStore.java:157)

       at net.sf.ehcache.Cache.initialise(Cache.java:269)

       at net.sf.ehcache.CacheManager.addCacheNoCheck(CacheManager.java:333)

       at net.sf.ehcache.CacheManager.addCache(CacheManager.java:325)

       at net.sf.ehcache.CacheManager.addCache(CacheManager.java:310)

       at org.hibernate.cache.EhCacheProvider.buildCache(EhCacheProvider.java:104)

       at org.hibernate.cache.CacheFactory.createCache(CacheFactory.java:61)

       at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:203)

       at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1152)

       at com.hep.tdm.dao.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:61)

       at com.hep.tdm.dao.HibernateSessionFactory.getSession(HibernateSessionFactory.java:43)

       at com.hep.tdm.dao.HibernateDao.<init>(HibernateDao.java:55)

       at com.sap.demo.test.testhibernate.test.TestView.onActionTestHibernate(TestView.java:195)

       at com.sap.demo.test.testhibernate.test.wdp.InternalTestView.wdInvokeEventHandler(InternalTestView.java:128)

来自 http://blog.csdn.net/net520/article/details/3915207

原创粉丝点击