<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    KK

    Kim-'s-Blog.Object-Everything.I'm POJO.

    .紀-錄.爲了忘卻的記憶..真的勇士,要敢于直面遇到的問題,敢于正視繁雜的原碼......在實踐中積累!

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      74 Posts :: 1 Stories :: 70 Comments :: 0 Trackbacks

    #

    官網打不開最近,
    但是可以通過下面這個官網連接直接下載
    http://downloads.myeclipseide.com/downloads/products/eworkbench/7.0/myeclipse-7.1-win32.exe
    posted @ 2009-03-22 21:46 Kim' 閱讀(4365) | 評論 (5)編輯 收藏

    與 數據庫 db 相關操作有兩種:
    1.從DB中讀cronExpression
    2.Job持久化到數據庫
    對于1:
    Quartz 在Spring中動態設置cronExpression
    參考 小刀的blog
    http://www.tkk7.com/xiaodaoxiaodao/articles/103437.html 

    通過DB加載cronException

    一個類是可以的
    2個類會出問題

     <bean id="test2" class="cn.edu.hust.mes.service.quartz.Test">  
       
    <property name="scheduler" ref="schedulerFactoryBean"/>         
       
    </bean>  
         
       
    <bean id="test" class="Test">  
       
    <property name="scheduler" ref="schedulerFactoryBean"/>  
       
    </bean>  
         
       
    <bean name="schedulerFactoryBean"  
                 
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
              
    <property name="triggers">  
                   
    <list>  
                     
    <ref bean="cronTriggerForPLCRead"/>  
                     
    <ref bean="cronTrigger"/>  
                  
    </list>  
             
    </property>  
       
             
    <property name="configLocation" value="classpath:quartz.properties"/>  
        
    </bean> 


    Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'schedulerFactoryBean': FactoryBean which is currently in creation returned null from getObject

    如果寫了攔截器的化 還會報這個錯 :

    Error creating bean with name 'test2': Bean with name 'test2' has been injected into other beans [schedulerJobDetailForPLCRead] in its raw version as part of a circular reference, but has eventually been wrapped (for example as part of auto-proxy creation). This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.


    對于2:
    MethodInvokingJobDetailFactoryBean 不能持久化
    必須用JobDetailBean 需繼承QuartzJobBean  不夠pojo
    使用MethodInvokingJobDetailFactoryBean的化會報:
    org.quartz.JobPersistenceException: Couldn't store job: Unable to serialize JobDataMap for insertion into database because the value of property 'methodInvoker' is not serializable: org.springframework.scheduling.quartz.MethodInvoki ngJobDetailFactoryBean [See nested exception: java.io.NotSerializableException: Unable to serialize JobDataMap for insertion into database because the value of property
    API上說了
    There's a note in the JavaDoc, I'd presume this might be your problem.
    JobDetails created via this FactoryBean are not serializable and thus not suitable for persistent job stores. You need to implement your own Quartz Job as a thin wrapper for each case where you want a persistent job to delegate to a specific service method.
    http://www.springframework.org/docs/api/org/springframework/scheduling/quartz/MethodInvokingJobDetailFactoryBean.html
    用MethodInvokingJobDetailFactoryBean不可持久化 除非加個thin wrapper
    但查不到任何資料
    但愿spring后續版本有好的方案 現在還是老老實實的用JobDetailBean吧

    另:
    不可用于web action action 用了session等作用域...
    Caused by: java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request? If you are actually operating within a web request and still receive this message,your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.
    posted @ 2009-03-19 22:19 Kim' 閱讀(4255) | 評論 (0)編輯 收藏

    Quartz Cron Expression 網上收集的資料 備忘:

    一個Cron-表達式是一個由六至七個字段組成由空格分隔的字符串,其中6個字段是必須的而一個是可選的,如下:


    字段名     允許的值     允許的特殊字符 
    秒     0-59     , - * / 
    分     0-59     , - * / 
    小時     0-23     , - * / 
    日     1-31     , - * ? / L W C 
    月     1-12 or JAN-DEC     , - * / 
    周幾     1-7 or SUN-SAT     , - * ? / L C # 
    年 (可選字段)     empty, 1970-2099     , - * /


    '*' 字符可以用于所有字段,在“分”字段中設為"*"表示"每一分鐘"的含義。

    '?' 字符可以用在“日”和“周幾”字段. 它用來指定 '不明確的值'. 這在你需要指定這兩個字段中的某一個值而不是另外一個的時候會被用到。在后面的例子中可以看到其含義。

    '-' 字符被用來指定一個值的范圍,比如在“小時”字段中設為"10-12"表示"10點到12點".

    ',' 字符指定數個值。比如在“周幾”字段中設為"MON,WED,FRI"表示"the days Monday, Wednesday, and Friday".

    '/' 字符用來指定一個值的的增加幅度. 比如在“秒”字段中設置為"0/15"表示"第0, 15, 30, 和 45秒"。而 "5/15"則表示"第5, 20, 35, 和 50". 在'/'前加"*"字符相當于指定從0秒開始. 每個字段都有一系列可以開始或結束的數值。對于“秒”和“分”字段來說,其數值范圍為0到59,對于“小時”字段來說其為0到23, 對于“日”字段來說為0到31, 而對于“月”字段來說為1到12。"/"字段僅僅只是幫助你在允許的數值范圍內從開始"第n"的值。 因此 對于“月”字段來說"7/6"只是表示7月被開啟而不是“每六個月”, 請注意其中微妙的差別。

    'L'字符可用在“日”和“周幾”這兩個字段。它是"last"的縮寫, 但是在這兩個字段中有不同的含義。例如,“日”字段中的"L"表示"一個月中的最后一天" —— 對于一月就是31號對于二月來說就是28號(非閏年)。而在“周幾”字段中, 它簡單的表示"7" or "SAT",但是如果在“周幾”字段中使用時跟在某個數字之后, 它表示"該月最后一個星期×" —— 比如"6L"表示"該月最后一個周五"。當使用'L'選項時,指定確定的列表或者范圍非常重要,否則你會被結果搞糊涂的。

    'W' 可用于“日”字段。用來指定歷給定日期最近的工作日(周一到周五) 。比如你將“日”字段設為"15W",意為: "離該月15號最近的工作日"。因此如果15號為周六,觸發器會在14號即周五調用。如果15號為周日, 觸發器會在16號也就是周一觸發。如果15號為周二,那么當天就會觸發。然而如果你將“日”字段設為"1W", 而一號又是周六, 觸發器會于下周一也就是當月的3號觸發,因為它不會越過當月的值的范圍邊界。'W'字符只能用于“日”字段的值為單獨的一天而不是一系列值的時候。

    'L'和'W'可以組合用于“日”字段表示為'LW',意為"該月最后一個工作日"。

    '#' 字符可用于“周幾”字段。該字符表示“該月第幾個周×”,比如"6#3"表示該月第三個周五( 6表示周五而"#3"該月第三個)。再比如: "2#1" = 表示該月第一個周一而 "4#5" = 該月第五個周三。注意如果你指定"#5"該月沒有第五個“周×”,該月是不會觸發的。

    'C' 字符可用于“日”和“周幾”字段,它是"calendar"的縮寫。 它表示為基于相關的日歷所計算出的值(如果有的話)。如果沒有關聯的日歷, 那它等同于包含全部日歷。“日”字段值為"5C"表示"日歷中的第一天或者5號以后",“周幾”字段值為"1C"則表示"日歷中的第一天或者周日以后"。

    對于“月份”字段和“周幾”字段來說合法的字符都不是大小寫敏感的。

    下面是一些完整的例子:


    表達式     含義 
    "0 0 12 * * ?"     每天中午十二點觸發 
    "0 15 10 ? * *"     每天早上10:15觸發 
    "0 15 10 * * ?"     每天早上10:15觸發 
    "0 15 10 * * ? *"     每天早上10:15觸發 
    "0 15 10 * * ? 2005"     2005年的每天早上10:15觸發 
    "0 * 14 * * ?"     每天從下午2點開始到2點59分每分鐘一次觸發 
    "0 0/5 14 * * ?"     每天從下午2點開始到2:55分結束每5分鐘一次觸發 
    "0 0/5 14,18 * * ?"     每天的下午2點至2:55和6點至6點55分兩個時間段內每5分鐘一次觸發 
    "0 0-5 14 * * ?"     每天14:00至14:05每分鐘一次觸發 
    "0 10,44 14 ? 3 WED"     三月的每周三的14:10和14:44觸發 
    "0 15 10 ? * MON-FRI"     每個周一、周二、周三、周四、周五的10:15觸發 
    "0 15 10 15 * ?"     每月15號的10:15觸發 
    "0 15 10 L * ?"     每月的最后一天的10:15觸發 
    "0 15 10 ? * 6L"     每月最后一個周五的10:15觸發 
    "0 15 10 ? * 6L"     每月最后一個周五的10:15觸發 
    "0 15 10 ? * 6L 2002-2005"     2002年至2005年的每月最后一個周五的10:15觸發 
    "0 15 10 ? * 6#3"     每月的第三個周五的10:15觸發

    ---------------------------------------------

    Field Name  Mandatory?  Allowed Values  Allowed Special Characters 
    Seconds     YES         0-59             , - * / 
    Minutes     YES         0-59             , - * / 
    Hours       YES         0-23             , - * / 
    Day of month  YES       1-31             , - * ? / L W C 
    Month         YES        1-12 or JAN-DEC  , - * / 
    Day of week   YES        1-7 or SUN-SAT   , - * ? / L C # 
    Year          NO  empty, 1970-2099        , - * / 


    項目實例:
                  second  minute  hours  dayOfMonth  month  dayOfWeek  year
    每月         0            0           6              ?                    *                6#3            ?
    每周        59           59         18            ?                    *                1                ?
    自定義    28          47          9             30                 7                ?             2006

    每月:每個月的第三個星期五的上午6:00:00 觸發
    每周:每周的星期日的下午18:59:59 觸發
    自定義:2006年7月30日上午9:47:28 觸發

    所有星號對應的段位置,都可以出現后面的符號(, - * /)
    (? / L C)這些符號可以出現在"一月哪天"和"星期"段位置
    (w)只能出現在"一月哪天"段位置
    (#)只能出現在"星期"段位置

    解釋符號代表的意思:
    * 代表任意合法的字段
    0 * 17 * * ? :表示在每天的5 PM 到 5:59之間的每一分鐘啟動scheduler

    ? 表示沒值被指定
    如果同時指定"一月哪天"和"星期",可能兩者對應不起來
    0 0,15,30,45 * * * ? :表示每刻鐘啟動scheduler
    所以推薦用法是其中一個指定值,另一個用?指定

    / 表示時間的增量
    0 0/15 * * * ? :表示每刻鐘啟動scheduler

    - 表示值的范圍
    0 45 3-8 ? * *

    L 如果用在"一月哪天"段上,表示一個月的最后一天;如果用在"星期"段上。表示一個星期的最后一天(星期六)
    0 0 8 L * ? :表示每個月最后一天的8點啟動scheduler

    W 表示最靠近給定時間的一天,(必須是星期一到星期五)

    # 例如 6#3表示一個月的第三個星期五
    posted @ 2009-03-19 22:10 Kim' 閱讀(2689) | 評論 (0)編輯 收藏

    Myeclipse7  安裝插件有點麻煩 記錄于此備忘

     

    導入項目

    http://javapojo.javaeye.com/topics/download/d2d7696a-703e-3d82-8fcc-ad21c9b896fc

    運行main方法

    得到一段字符串

    copy到Myeclipse7目錄:Genuitec\MyEclipse 7.0\configuration\org.eclipse.equinox.simpleconfigurator\bundles.info

    這個文件里面。

     

    最近安裝了個Drools fro eclipse3.4 的插件

    下載 drools-5.0.0.CR1-eclipse-all.jar

    解壓到某文件夾

    copy其plugins路徑到main方法中(注意是plugins目錄哦)

    運行該類


    public static void main(String[] args)
    {
    new CreatePluginsConfig().print("E:\\Genuitec\\kimplug\\drools-5.0.0.CR1-eclipse-all\\plugins");

    }

     得到

    org.guvnor.tools,5.0.0.CR1,file:/E:\Genuitec\kimplug\drools-5.0.0.CR1-eclipse-all\plugins\org.guvnor.tools_5.0.0.CR1.jar,4,false
    org.eclipse.webdav,3.0.101,file:/E:\Genuitec\kimplug\drools-5.0.0.CR1-eclipse-all\plugins\org.eclipse.webdav_3.0.101.jar,4,false
    org.drools.eclipse,5.0.0.CR1,file:/E:\Genuitec\kimplug\drools-5.0.0.CR1-eclipse-all\plugins\org.drools.eclipse_5.0.0.CR1.jar,4,false
    org.drools.eclipse.task,5.0.0.CR1,file:/E:\Genuitec\kimplug\drools-5.0.0.CR1-eclipse-all\plugins\org.drools.eclipse.task_5.0.0.CR1.jar,4,false

     

    將其拷入bundles.info尾部

    重啟myeclipse ok了



    posted @ 2009-03-18 11:25 Kim' 閱讀(2566) | 評論 (5)編輯 收藏

    當然是修改注冊表

     

    1、打開注冊表編輯器,打到[HKEY_CLASSES_ROOT\Folder\shell]子鍵,在其下面新建名為“命令提示符”的 項,再在這個項下面新建名為"Command"的 項。

    2、選擇"command"項,把“默認”字符竄值的數據設為“C:\windows\system32\cmd.exe cd "%l"”,然后確定。

    這樣任意目錄甚至盤符的右鍵菜單中都增加了一項“命令提示符”。

     

    比從cmd直接敲到目錄要方便的多了......

    posted @ 2009-03-17 14:08 Kim' 閱讀(802) | 評論 (0)編輯 收藏

    spring 某些類 從 DB 初始化 一些屬性
    在spring初始化過程中加載數據庫中的數據

    項目中有這個需求 需啟動時將某些屬性賦DB讀到的值
    達到同步數據的目的
    考慮 1:構造函數 不可以 dao還未初始化 null point
    2:xx 屬性 = dao.getXX.... dao還未初始化

    使用BeanPostProcessor可以

    public class PBSTrackManagerPostProcessor implements BeanPostProcessor
    {

        public Object postProcessAfterInitialization(Object obj, String s)
                throws BeansException
        {
            if(obj instanceof PBSTrackManager)
            {
                ((PBSTrackManager) obj).plcObjectInit();
            }
            return obj;
        }

        public Object postProcessBeforeInitialization(Object obj, String s)
                throws BeansException
        {
            return obj;
        }

    }

    但要注意配置文件
    <bean id="pbsTrackManagerPostProcess" class="cn.edu.hust.mes.service.manager.productionplan.impl.PBSTrackManagerPostProcessor">

    !!!!
    default-lazy-init="false"
    實時加載才可以


    posted @ 2009-03-16 10:34 Kim' 閱讀(2309) | 評論 (1)編輯 收藏

    在項目中發現一個奇怪的問題

     

    manager層使用 注入的dao ,dao.getHibernateTemplate() 結果得到的是null......

     

    而在dao中使用 this.getHibernateTemplate()卻一切正常...

     


    經調試發現: <aop:pointcut id="logPointcut" expression="within(cn.edu.hust.mes.service.manager..*) or within(cn.edu.hust.mes.domain.dao..*)" /> 如果被自己寫的 aop 攔截器 攔截了的話

    dao就是 cglib的. 部分屬性為null...

    而讓spring 自己注入就是ok的了


    是延遲加載 但使用是報空指針 還是什么原因 未知

    暫時去掉log攔截 一切ok

    posted @ 2009-03-16 09:46 Kim' 閱讀(1002) | 評論 (0)編輯 收藏

    http://javapojo.javaeye.com
    同步發布
    多多指教
    posted @ 2009-03-14 14:05 Kim' 閱讀(104) | 評論 (0)編輯 收藏

    最近同事本機發布項目會出現
    Tomcat 6 使用 JDK 1.6 和 jaxb2.17 問題
    CXF 新版會用到jaxb2.17 但 Tomcat 6 JDK 會load jaxb2.0
    解決辦法:

    找到tomcat 的默認 endorsed 目錄
    the default endorsed directory is: $CATALINA_HOME/endorsed.
    如果沒有這個目錄 建這個目錄講jaxb的3個Jar包Copy來 OK
    java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI
    (from jar:file:/somedirectory/jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)

    It's actually a very simple fix, but painful enough to warrant a post. Put the jaxb-api.jar that you're trying to use into JDK_HOME/jre/lib/endorsed. If the endorsed directory doesn't exist, make it. This is apparently only a problem with JDK 1.6, not with JDK 1.5.


    ------------------------------------------
    如Myeclipse Tomcat
    將jaxb-api-2.1.jar jaxb-impl-2.1.7.jar jaxb-xjc-2.1.7.jar
    拷貝到E:\Genuitec\Common\plugins\com.genuitec.eclipse.easie.tomcat.myeclipse_7.9.100.zmyeclipse80020090924a\tomcat
    新建的common\endorsed 目錄里 便可。
    posted @ 2009-03-14 14:04 Kim' 閱讀(879) | 評論 (0)編輯 收藏

    細節不僅僅是細節,他們構成了設計.
    使其盡可能的簡單,而不是簡化.
    如果我有更多的時間,我將寫一封更短的信.
    這可能是好的設計,或者壞的設計,但絕不可能沒有設計!
    posted @ 2008-12-31 12:52 Kim' 閱讀(157) | 評論 (0)編輯 收藏

    僅列出標題
    共8頁: 上一頁 1 2 3 4 5 6 7 8 下一頁 
    jj
    主站蜘蛛池模板: 亚洲欧洲国产日韩精品| 91制片厂制作传媒免费版樱花| 亚洲精品熟女国产| 久久亚洲精品无码播放| 国产v片免费播放| 欧美在线看片A免费观看| 88xx成人永久免费观看| 毛片基地看看成人免费| 黄人成a动漫片免费网站| 亚洲精品伦理熟女国产一区二区| 亚洲黄色在线电影| 亚洲乱亚洲乱淫久久| 亚洲人成网77777色在线播放| 亚洲成人高清在线| 国产一区二区免费在线| 精品国产免费一区二区| 我要看WWW免费看插插视频| 久草免费在线观看视频| 狼群影院在线观看免费观看直播| 日韩电影免费观看| 免费国产在线视频| 国产精品白浆在线观看免费| 中文字幕免费在线播放| 美女网站在线观看视频免费的| 日本精品久久久久久久久免费| 美女被羞羞网站免费下载| 国产大陆亚洲精品国产| 亚洲精品色在线网站| 国产亚洲精品美女久久久久| 亚洲a无码综合a国产av中文| 美女扒开尿口给男人爽免费视频| 日本亚洲中午字幕乱码| 国产亚洲精品91| 一级做a爱过程免费视| 精品无码国产污污污免费网站国产| 精品国产免费人成网站| a级毛片无码免费真人久久| 97无码人妻福利免费公开在线视频 | 亚洲电影在线播放| 亚洲午夜国产精品| 在线亚洲午夜片AV大片|