posts - 36, comments - 30, trackbacks - 0, articles - 3

               摘要: 要實現向編輯器增加活動,我們應該在面板上選一種活動(開始活動,普通活動,結束活動),拖到編輯器中。為此我們必須在面板和編輯器中分別加監聽。修改WorkflowProcessEditor類 在編輯器的GraphicalViewer加監聽 protectedvoid initializeGraphicalViewer() {     ...  閱讀全文

          posted @ 2008-01-04 08:49 笑看人生 閱讀(1405) | 評論 (0)編輯 收藏

               摘要:     為了實現流程編輯器,光有我們建立的模型,控制器和視圖還不夠,我們還必須新建一個編輯器類,為此,我們要新建一個插件項目,我們新建的插件項目com.example.workflow結構如下:     為了實現一個編輯器,我們必須擴展org.eclipse.ui.editors這個擴展點,這個可...  閱讀全文

          posted @ 2008-01-03 08:54 笑看人生 閱讀(2869) | 評論 (3)編輯 收藏

               摘要:     這一節,我們講控制器的設計,在gef框架中,控制器作為連接模型和視圖的橋梁,它主要根據用戶的操作來修改模型,并且刷新視圖。在前面我們定義了流程模型(WorkflowProcess),活動模型(AbstractActivity),轉移模型(Transition),在這里我們分別定義相應的控制器(EditPart),首先我們定義流程模型對應的控制器(Wo...  閱讀全文

          posted @ 2008-01-02 16:51 笑看人生 閱讀(925) | 評論 (0)編輯 收藏

               摘要:     我自從進入公司后,一直從事有關gef方面的開發工作,在這期間,走過不少彎路,僅僅是把GEF框架弄明白,就費了很大力氣,所以,現在想寫一點東西出來,供初學者閱讀。     GEF(Graphical Editing Framework)是圖形化編輯器開發的工具,比較典型的應用就是IBM 的Rose,它是一個...  閱讀全文

          posted @ 2008-01-02 15:32 笑看人生 閱讀(3534) | 評論 (5)編輯 收藏

          在二的基礎上,我們再給這個簡單web應用增加聲明式事務,聲明式事務原來是EJB所引以為自豪的地方,現如今Spring框架的AOP也支持這功能,關于AOP的內容,這兒不想太深入,有興趣的讀者,可以參見本blog上有關Spring AOP方面的介紹,為了增加聲明式事務,我們只需修改Spring的配置文件applicationContext.xml,

          1.首先我們在配置文件中增加事務管理器,由于本應用采用了Hibernate,所以我們采用HibernateTransactionManager,配置如下:

          1<bean  id="transactionManager" 
          2class="org.springframework.orm.hibernate.HibernateTransactionManager">
          3    <property name="sessionFactory">
          4      <ref local="sessionFactory"/>
          5    </property>
          6 </bean>

          2.要在Sping使用聲明式事務,我們得用TransactionProxyFactoryBean,它的作用就是把方法包裹在事務中,配置如下:

           1<bean id="bookService" 
           2class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
           3    <property name="transactionManager">
           4      <ref local="transactionManager"/>
           5    </property>
           6    <property name="target">
           7      <ref local=" registerTarget"/>
           8    </property>
           9    <property name="transactionAttributes">
          10      <props>
          11    <prop key="save*">
          12PROPAGATION_REQUIRED,-OrderException 
          13</prop>
          14      </props>
          15    </property>
          16 </bean>
          17

          下面我們簡單解釋一下上面配置的意思:transactionManager屬性引用一個事務管理器,在這里我們引用HibernateTransactionManager,target屬性指定被代理的對象,transactionAttributes屬性的save*表示在代理對象中所有以save開頭的方法,PROPAGATION_REQUIRED表示代理對象中所有以save開頭的方法都必須在事務中運行,-OrderException表示在執行以save開頭的方法時,如果有OrderException異常拋出,則事務立即回滾。

          完整的applicationContext.xml的配置如下:

           1<?xml version="1.0" encoding="UTF-8"?>
           2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
           3 
           4<beans>    
           5 
           6    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
           7       <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
           8       <property name="url" value="jdbc:mysql://localhost/register"/>
           9       <property name="username" value="root"/>
          10       <property name="password" value="root"/>
          11    </bean>    
          12 
          13    <!-- Hibernate SessionFactory -->
          14    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
          15       <property name="dataSource" ref="dataSource"/>
          16       <property name="mappingDirectoryLocations">
          17           <value>classpath:test\register\entity\</value>
          18       </property>
          19       <property name="hibernateProperties">
          20           <props>
          21              <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
          22              <prop key="hibernate.show_sql">true</prop>
          23              <prop key="hibernate.generate_statistics">true</prop>
          24           </props>
          25       </property>       
          26    </bean>    
          27    
          28    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
          29    <property name="sessionFactory">
          30      <ref local="sessionFactory"/>
          31    </property>
          32 </bean>
          33 
          34   <bean id="registerService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
          35    <property name="transactionManager">
          36      <ref local="transactionManager"/>
          37    </property>
          38    <property name="target">
          39      <ref local=" registerTarget"/>
          40    </property>
          41    <property name="transactionAttributes">
          42      <props>        
          43        <prop key="save*">PROPAGATION_REQUIRED,-OrderException</prop>
          44      </props>
          45    </property>
          46 </bean>
          47 
          48   <bean id="registerDAO" class="test.register.dao.RegisterDAO">
          49        <property name="sessionFactory" ref="sessionFactory"/>       
          50 </bean>
          51 
          52   <bean id="registerTarget" class="test.register.service.RegisterService">
          53        <property name="registerDAO" ref="registerDAO"/>      
          54 </bean> 
          55 
          56</beans>
          57

          3.同時還要修改action-servlets.xml文件

          1<?xml version="1.0" encoding="UTF-8"?>
          2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
          3<beans>    
          4    <bean name="/register" 
          5class="test.register.action.RegisterAction">
          6       <property name="registerService" ref="registerTarget"/>     
          7    </bean>     
          8</beans>
          9




          posted @ 2008-01-02 10:11 笑看人生 閱讀(472) | 評論 (0)編輯 收藏

          1.我們已經搭建完了基本框架,接下來加入日志功能,只需修改原來的web.xml,增加一些配置信息:

           1<!--通知Spring Log4j配置文件的位置 -->
           2<context-param>
           3    <param-name>log4jConfigLocation</param-name>
           4    <param-value>/WEB-INF/log4j.properties</param-value>
           5</context-param>
           6 
           7<!--Spring默認刷新Log4j配置文件的間隔,單位為millisecond-->
           8<context-param>
           9    <param-name>log4jRefreshInterval</param-name>
          10    <param-value>60000</param-value>
          11</context-param>
          12 
          13<!--在應用啟動時,由Spring負責加載Log4j-->
          14<listener>
          15    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
          16</listener>

          2.接下來我們定義log4j.properties

           1# Global logging configuration
           2log4j.rootLogger=DEBUG,console,file
           3 
           4## APPENDERS ##
           5# define an appender named console, which is set to be a ConsoleAppender
           6log4j.appender.console=org.apache.log4j.ConsoleAppender
           7 
           8# define an appender named file, which is set to be a RollingFileAppender
           9log4j.appender.file=org.apache.log4j.RollingFileAppender
          10# replace <CATALINA_HOME> with your true path
          11log4j.appender.file.File=D:/eclipse/workspace/login/log.txt
          12 
          13## LAYOUTS ##
          14# assign a SimpleLayout to console appender
          15log4j.appender.console.layout=org.apache.log4j.SimpleLayout
          16 
          17# assign a PatternLayout to file appender
          18log4j.appender.file.layout=org.apache.log4j.PatternLayout
          19log4j.appender.file.layout.ConversionPattern=%t%p-%m%n

          在log4j.properties中,我們定義了日志級別是DEBUG,日志信息輸出目的地是控制臺(console)和文件(file)。

          3.這樣我們就可以在程序代碼中進行日志操作了:

           1package test.register.action;
           2 
           3import javax.servlet.http.HttpServletRequest;
           4import javax.servlet.http.HttpServletResponse;
           5 
           6import org.apache.log4j.LogManager;
           7import org.apache.log4j.Logger;
           8import org.apache.struts.action.Action;
           9import org.apache.struts.action.ActionForm;
          10import org.apache.struts.action.ActionForward;
          11import org.apache.struts.action.ActionMapping;
          12import org.apache.struts.action.DynaActionForm;
          13 
          14import test.register.entity.Register;
          15import test.register.service.RegisterService;
          16 
          17public class RegisterAction extends Action{
          18       
          19       private static final Logger log = LogManager.getLogger(RegisterAction.class);
          20       
          21       private RegisterService registerService;
          22 
          23       public RegisterService getRegisterService() {
          24              return registerService;
          25       }

          26 
          27       public void setRegisterService(RegisterService registerService) {
          28              this.registerService = registerService;
          29       }

          30 
          31       public ActionForward execute(ActionMapping mapping,
          32                                                               ActionForm form, 
          33                                                 HttpServletRequest request, 
          34                                    HttpServletResponse response) 
          35       throws Exception {
          36              log.info("save register");
          37              Register r = (Register)((DynaActionForm)form).get("register"); 
          38              getRegisterService().saveRegister(r);           
          39              return mapping.findForward("success");
          40       }
               
          41       
          42}

          4.在上面log4j.properties中,我們指定日志輸入文件用了絕對路徑,這在很多時候不方便,為此我們作如下修改:在web.xml中增加一個上下文參數

          1<context-param>
          2    <param-name>webAppRootKey</param-name>
          3    <param-value>webLogin.root</param-value>
          4</context-param>

          增加系統變量,變量名為webAppRootKey,變量值可以指定應用部署的目錄,這樣就可以在log4j.properties對日志輸出的文件路徑作如下修改:

          log4j.appender.file.File=${webLogin.root}/log.txt


          posted @ 2008-01-02 10:06 笑看人生 閱讀(583) | 評論 (0)編輯 收藏

               摘要: 這個Web應用很簡單,就是實現一個用戶注冊頁面,當用戶在register.jsp頁面輸入注冊信息,點保存,如果成功,進入registerSuccess.jsp頁面。這個應用雖然很小,但它也有三層組成,表示層由Struts框架負責,業務層由Spring框架負責,持久層由Hibernate框架負責。 開發環境:MyEclipse 5+ MySQL4 + Struts1.3.5 + Spring2.0...  閱讀全文

          posted @ 2008-01-02 09:43 笑看人生 閱讀(1941) | 評論 (0)編輯 收藏

          僅列出標題
          共4頁: 上一頁 1 2 3 4 
          主站蜘蛛池模板: 独山县| 收藏| 冷水江市| 六枝特区| 靖远县| 通山县| 西乡县| 唐海县| 察哈| 林西县| 平阳县| 枣庄市| 灵宝市| 太康县| 九台市| 万年县| 盐池县| 东方市| 德州市| 南涧| 亳州市| 孙吴县| 紫阳县| 青冈县| 廉江市| 娱乐| 讷河市| 新邵县| 法库县| 石台县| 金阳县| 保山市| 葵青区| 板桥市| 万全县| 正蓝旗| 和林格尔县| 舞阳县| 讷河市| 客服| 岑巩县|