posts - 32,  comments - 119,  trackbacks - 0

最新评论

共3页: 1 2 3 下一页 
@qqq

用空补个代码上来 呵呵 最近很忙
罗主要是能提供代码让我们看看就好了
re: javascript常见错误解释 飞龙 2008-06-27 23:54  
为什么document.body.scrollTop饭回的值老是0啊
现在我们公司也在让学习portlet,期待有例子贴出,期待……
re: Mondrian之初体验 小立飞刀 2008-06-17 17:05  
@小白
没遇到过您的问题,看起来应该是缺少Jar包,在www.docjar.com上找找看。
re: Mondrian之初体验[未登录] 小白 2008-06-17 15:58  
博主你好
我刚在看mondrian,编译例子时遇到这么个问题:NoClassDefFoundError: org/eigenbase/xom/XOMUtil ?
我试过许多不同版本的mondrian都有这个问题
请问那个eigenbase包是什么,能在哪里下到
直接引用进去能解决问题吗?
望能赐教,多谢了
我邮箱是hkharryking@gmail.com
re: Quartz Cron Expression 小立飞刀 2008-06-12 14:25  
@楷子狐

0 ,0 , 6 ,?,*,6#3 ,? 每个月的第三个星期五的上午6:00:00
59,59,18,?,*,1,? 每周的星期日的下午18:59:59
28,47,9,12,6,?,2008 2008年6月12日上午9:47:28
re: Quartz Cron Expression 楷子狐 2008-06-11 18:59  
能不能举两个例子啊?
re: 如何同时启动多个Tomcat服务器 小立飞刀 2008-05-15 14:46  
@ok了
客气了
谢谢你的文章,我把问题解决了.
@游客
replace(col,chr(13) || chr(10),'<br>')
@谢谢

客气了
很详细 ,谢谢
re: 应用Spring Portlet MVC开发自己的Portlet(1) 踏着夕阳归去 2008-04-02 21:19  
学习了,呵呵,请问能不能给个例子。
不错 oracle10g中不行。可以把回车替代为其他字符,但是回车依然存在
@fei

没试过10g的情况,fei 10g下怎么解决的这个问题?可否赐教
你这个根本就不行的,在oracle10G中
re: Mondrian之初体验 小立飞刀 2007-12-27 17:01  
@wdmcln
需要您在工程的 $\WEB-INF\mondrian.properties中配置数据库。
以Oracle DB为例:
#For Oracle DB
mondrian.test.connectOracle=Provider=mondrian; Jdbc=jdbc:oracle:thin:@%Ur_IP%:1521:%Ur_DB_Name%; JdbcUser=%User_Name%; JdbcPassword=%User_Pwd%; Catalog=file:///%Ur_Tomcat_Path%/webapps/mondrian/WEB-INF/queries/mondriantest.xml; JdbcDriver=oracle.jdbc.driver.OracleDriver
re: Mondrian之初体验 @wdmcln 2007-12-27 16:05  
初涉mondrian,配置的时候,想按照自己的的数据库,例如:oracle/sqlserver2005此类的数据库,tomcat中设置了数据源,可还是报错!
可以交流交流?
wdmcln@hotmail.com
wdmcln@gmail.com
re: Mondrian之初体验 @wdmcln 2007-12-27 16:04  
初涉mondrian,配置的时候,想按照自己的的数据库,例如:oracle/sqlserver2005此类的数据库,tomcat中设置了数据源,可还是报错!
可以交流交流?
re: Tomcat给我的java.lang.OutOfMemoryError: PermGen http://www.21v.net 2007-12-20 16:06  
http://www.21v.net 福建省长乐市亿佳花边厂 欢迎交换友情链接
@屹砾
@ci

客气 客气
不错。。。。。
不错,基础而有益。
re: 如何同时启动多个Tomcat服务器 小立飞刀 2007-12-17 11:42  
@sun
启动多个Tomcat服务,Tomcat的版本可以不同,可以分别升级,这几个Tomcat里的应用不会互相影响,并且web应用运行于多个JVM中;
启动多个Tomcat实例,Tomcat的版本相同,web应用也是分别运行在不同的JVM上。

PS:tomcat如何在一个程序版本上运行多个instance

tomcat有个环境变量CATALINA_BASE,用来指定一个目录,tomcat是依据该目录的内容来实现大部分的启动工作的,包括我们最关心的web app的加载,该目录由conf,logs,shared,webapps,work,temp子目录组成。这样,为每个instance新建一个目录,配置好其内容(注意同样要修改server.xml使端口不一样),然后在启动每个instance时使CATALLINA_BASE指向该instance对应的目录,就能实现启动多个instance的目的。可以在instance对应的目录下写一个startup.bat来完成该instance的启动工作,该脚本使用脚本所在的目录作为CATALINA_BASE,可以在从任何目录下运行,并且保留了tomcat启动脚本的参数:
@echo off set CMD_LINE_ARGS= :setArgs if ""%1""=="""" goto doneSetArgs set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 shift goto setArgs :doneSetArgs set EXECUTABLE=%CATALINA_HOME%\bin\startup.bat set CATALINA_BASE=%~dp0 call "EXECUTABLE" %CMD_LINE_ARGS%
楼主,还有一个问题需要请教:
hcom 说的意思不是在一个tomcat下部署多个app,他的意思是安装一个tomcat,启动多个实例,例如我可以只安装一个tomcat但是经过配置,可以达到开启多个服务的目的,例如:http://localhost:8081/app1
http://localhost:8082/app1
而安装多个tomcat也可以达到以上的目的,我也是关于这个不清楚
re: 如何同时启动多个Tomcat服务器 小立飞刀 2007-12-12 11:22  
@sun
那就需要看您的应用的数据源是否相同了,如果不同,肯定是数据不一致了。建议您在Tomcat中配置应用的数据源。
想问一下,如果我可以同时在8888,9999端口访问我的同一个app。
是否会出现数据访问不一致的情况??
学习了。
re: LDAP介绍 冰儿 2007-10-24 10:27  

re: Spring Quartz如何动态配置时间(2) 小立飞刀 2007-10-15 09:40  
@CC
这个类封装了一些Quartz时间规则的常量,便于自己使用,定义比较灵活,可以根据您的具体情况扩展。

/**
* Quartz时间规则常量类
* CronExRelated
* @author allen
*/
public class CronExRelated {

public static final String _EVERY = "every";
public static final String _ANY = "any";
public static final String _RANGES = "ranges";
public static final String _INCREMENTS = "increments";
public static final String _ADDITIONAL = "additional";
public static final String _LAST = "last";
public static final String _WEEKDAY = "weekday";
public static final String _THENTH = "theNth";
public static final String _CALENDAR = "calendar";

public static final String _TYPE = "type";

/**
* 0 0 6 ? * 1#1 ? monthly
* 0 0 6 ? * 1 ? weekly
* 0 0 6 30 7 ? 2006 useDefined
*/
static String[] headTitle = {"TYPE","SECONDS","MINUTES","HOURS","DAYOFMONTH","MONTH","DAYOFWEEK","YEAR"};

/**
* cron expression special characters
* Map
* specialCharacters
*/
public static Map specialCharacters;

static {
specialCharacters = new HashMap(10);
specialCharacters.put(_EVERY, "*");
specialCharacters.put(_ANY, "?");
specialCharacters.put(_RANGES, "-");
specialCharacters.put(_INCREMENTS, "/");
specialCharacters.put(_ADDITIONAL, ",");
specialCharacters.put(_LAST, "L");
specialCharacters.put(_WEEKDAY, "W");
specialCharacters.put(_THENTH, "#");
specialCharacters.put(_CALENDAR, "C");

specialCharacters.put(_TYPE, headTitle);
}

public static void set(String ex, int index) {
((String[])specialCharacters.get(_TYPE))[index] = ex;
}

}
能否提供下CronExRelated类的代码?

貌似不是spring或者quartz包里的
re: javascript常见错误解释 aaaa 2007-09-25 10:16  
JScript!= javascript
re: javascript常见错误解释 千里冰封 2007-09-24 18:23  
不错,挺实用的
说的不错了..人家给你提供了解决方案,如果不对的话,肯定是你自己的问题
总算找到一个比较好的解释的了。但是现在CLOB类型也会经常报这个错误
re: 内外网共享FCK editor的上传文件 小立飞刀 2007-09-20 11:26  
@Alexander.Yu
客气了
re: 内外网共享FCK editor的上传文件 小立飞刀 2007-09-20 09:25  
@haojunq
一开始想采用第一种方法的,毕竟省事嘛。但考虑到安全问题,还有想记录下上传文件的信息,最后采用了第三种。
我采用的是第一种方法
re: 内外网共享FCK editor的上传文件 Alexander.Yu 2007-09-19 02:19  
好文。。。
re: 内外网共享FCK editor的上传文件 千里冰封 2007-09-18 16:57  
呵呵,看不太懂
re: TransformerFactoryImpl not found exception 小立飞刀 2007-08-28 16:03  
@纟

您哪儿不明白?直接写出来啊
极为讨厌说东西不说明白
问一下:
Qest1:rescheduleJob是不是在两种场景下使用,一是服务重启时,一是用户需要更改任务的时间规则(触发器)时?

Qest2:用户在更改任务的时间规则(触发器)时,可能还需要任务已经运行的状态信息。
场景一:某个任务从2007/1/1日开始,每天8:30运行。到了2007/5/1日,用户想更改为每天9:00运行,新触发器设为2007/1/1,9:00。希望的更新触发器后第一次运行时间是2007/5/2日 9:00。请问quartz可以做到吗?
场景二:某任务的执行次数为100次,当执行到30次时,用户希望把执行次数改为150次,新触发器设为150次,所以任务还需执行150-(100-30)=80次。请问quartz可以做到吗?
@中东
因为是多对多的关系,所以双方都要定义。
另外多对一时,主从方也都需要设置cascade属性,举个例子:

主控方:Business
@ManyToOne(cascade ={CascadeType.PERSIST,CascadeType.MERGE})
/** 对应的流程模板 */
private BusinessFlow flow;

受控方:BusinessFlow
@OneToMany(mappedBy="flow",cascade ={CascadeType.ALL},fetch=FetchType.LAZY)
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
/** 业务流程可以应用于的业务列表 */
private List<Business> business = new ArrayList<Business>();

当在Business类中配置成cascade = { CascadeType.PERSIST, CascadeType.MERGE } 时,更新和删除两个级联时,可以正常删除;
当在Business类中配置成cascade = { CascadeType.ALL } or cascade={} 时,无法删除。
更新时也类似于这种情况。

关于以上所说,您可以亲自试验一下,看看其中的区别。然后请您告诉我实验结果。:)
毕竟是“实践出真知”嘛!

thrank you!
  是这样的,客户有个需求是可以自己修改任务的间隔时间的!(这个值是设置到数据库中的),因为SimpleTriggerBean必须设置repeatInterval属性,而这个值因为是保存在数据中的,所以我想设置两个定时任务CMSTransformCRMTrigger和ScheduleInfoActionTrigger,ScheduleInfoActionTrigger在CMSTransformCRMTrigger任务执行前触发:其目的是为CMSTransformCRMTrigger根据数据库的值设置其repeatInterval属性,配置文件如下:

    <bean id="CMSTransformCRMEngine" class="org.springframework.aop.framework.ProxyFactoryBean">
        
<property name="targetSource">
            
<bean class="org.springframework.aop.target.SingletonTargetSource">
                
<constructor-arg>
                    
<bean class="com.server.business.cms.CMSTransformCRMEngine"/>
                
</constructor-arg>
            
</bean>
        
</property>
        
<property name="interceptorNames">
            
<list>
                
<value>CallContextInterceptor</value>
            
</list>
        
</property>
    
</bean>

 
<bean id="CMSTransformCRMJob" class="org.springframework.scheduling.quartz.JobDetailBean">         
        
<property name="jobClass">
            
<value>com.wisecrm.server.business.cms.CMSTransformCRMScheduledTask</value>
        
</property>    
        
<property name="jobDataAsMap">
            
<map>
                
<entry key="cmsTranCRMEnginer">
                    
<ref bean="CMSTransformCRMEngine"></ref>
                
</entry>
            
</map>
        
</property>
    
</bean>
    
     
<bean id="CMSTransformCRMTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
        
<property name="jobDetail">
            
<ref bean="CMSTransformCRMJob"></ref>
        
</property>    
        
<property name="startDelay">
            
<value>90000</value>
        
</property>
        
<property name="repeatInterval">
            
<value>90000</value>
        
</property>
    
</bean>
    
    
<bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
        
<property name="dataSource" ref="DataSource"/>     
        
<property name="scheduler" ref="schedulerFactory"/>     
    
</bean>
    
    
<bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        
<property name="targetObject" ref="ScheduleInfoAction"/>
        
<property name="targetMethod">
             
<value>setTaskTimeByPreference</value>
        
</property>
        
<!--property name="arguments">
            <list>
                <ref local="DataSource"/>
                <ref local="schedulerFactory"/>
            </list>
        </property
-->
        
<property name="concurrent" value="false"/>
    
</bean>
    
    
<bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
        
<property name="jobDetail">
            
<ref bean="ScheduleInfoActionFactory"></ref>
        
</property>    
        
<property name="startDelay">
            
<value>80000</value>
        
</property>
        
<property name="repeatInterval">
            
<value>50000</value>
        
</property>
    
</bean>
    
    
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
        
<property name="triggers">             
            
<list>                 
                
<ref local="CMSTransformCRMTrigger"/>             
                
<ref local="ScheduleInfoActionTrigger"/>             
            
</list>         
        
</property>
    
</bean>


ScheduleInfoAction是动态设置间隔时间的接口:

public class ScheduleInfoAction {

    
private Scheduler scheduler;

    
public void setTaskTimeByPreference() throws SchedulerException 
{
        
if (isStartCMSTransformCRMTask()) 
{
            SimpleTriggerBean trigger 
= (SimpleTriggerBean) scheduler.getTrigger("ScheduleInfoActionTrigger
",
                            Scheduler.DEFAULT_GROUP);
            trigger.setRepeatInterval(Long.parseLong(Application.getSystemSettingService().getPrefValue(
"CMSPeriod
")));
            scheduler.rescheduleJob(
"ScheduleInfoActionTrigger
",
                    Scheduler.DEFAULT_GROUP, trigger);
        }
 
else {
            scheduler.shutdown();
        }

    }


    public
 boolean isStartCMSTransformCRMTask() {
        
return Application.getSystemSettingService().getPrefValue("CMSPeriod"!= null
;
    }


    public
 Scheduler getScheduler() {
        
return scheduler;
    }


    public
 void setScheduler(Scheduler scheduler) {
        
this.scheduler 
= scheduler;
    }


}

  但是不知为和两个任务都不执行?

后面我再在程序启动时就通过ScheduleInfoAction的factoryBean

设置CMSTransformCRMTrigger其repeatInterval属性,只保留一个定时任务就可以了,

配置如下:


<bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
        
<property name="scheduler" ref="schedulerFactory"/>     
    
</bean>
    
    
<bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        
<property name="targetObject" ref="CMSTransformCRMEngine"/>
        
<property name="targetMethod">
             
<value>run</value>
        
</property>
        
<property name="concurrent" value="false"/>
    
</bean>
    
    
<bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
        
<property name="jobDetail">
            
<ref bean="ScheduleInfoActionFactory"></ref>
        
</property>    
        
<property name="startDelay">
            
<value>80000</value>
        
</property>
        
<property name="repeatInterval">
            
<value>80000</value>
        
</property>
    
</bean>
    
    
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
        
<property name="triggers">             
            
<list>            
                
<ref bean="ScheduleInfoActionTrigger"/>             
            
</list>         
        
</property>
    
</bean>


但总感觉到有点笨拙,你帮忙参考下,为什么repeatInterval不能通过继承SimpleTriggerBean复写getRepeatInterval方法去设置呢?

re: Spring Quartz如何动态配置时间(3) 小雪飞刀 2007-08-10 14:32  
@boddi
首先Scheduler是接口不是类,其次FactoryBean that sets up a Quartz Scheduler, manages its lifecycle as part of the Spring application context, and exposes the Scheduler reference for dependency injection.

您下面这个配置我不太明白是什么意思?能否把整个配置文件贴出来?
thrank you!
  是这样的,客户有个需求是可以自己修改任务的间隔时间的!(这个值是设置到数据库中的),因为SimpleTriggerBean必须设置repeatInterval属性,而这个值因为是保存在数据中的,所以我想设置两个定时任务CMSTransformCRMTrigger和ScheduleInfoActionTrigger,ScheduleInfoActionTrigger在CMSTransformCRMTrigger任务执行前触发:其目的是为CMSTransformCRMTrigger根据数据库的值设置其repeatInterval属性,配置文件如下:
    <bean id="CMSTransformCRMEngine" class="org.springframework.aop.framework.ProxyFactoryBean">
        
<property name="targetSource">
            
<bean class="org.springframework.aop.target.SingletonTargetSource">
                
<constructor-arg>
                    
<bean class="com.server.business.cms.CMSTransformCRMEngine"/>
                
</constructor-arg>
            
</bean>
        
</property>
        
<property name="interceptorNames">
            
<list>
                
<value>CallContextInterceptor</value>
            
</list>
        
</property>
    
</bean>

 
<bean id="CMSTransformCRMJob" class="org.springframework.scheduling.quartz.JobDetailBean">         
        
<property name="jobClass">
            
<value>com.wisecrm.server.business.cms.CMSTransformCRMScheduledTask</value>
        
</property>    
        
<property name="jobDataAsMap">
            
<map>
                
<entry key="cmsTranCRMEnginer">
                    
<ref bean="CMSTransformCRMEngine"></ref>
                
</entry>
            
</map>
        
</property>
    
</bean>
    
     
<bean id="CMSTransformCRMTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
        
<property name="jobDetail">
            
<ref bean="CMSTransformCRMJob"></ref>
        
</property>    
        
<property name="startDelay">
            
<value>90000</value>
        
</property>
        
<property name="repeatInterval">
            
<value>90000</value>
        
</property>
    
</bean>
    
    
<bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
        
<property name="dataSource" ref="DataSource"/>     
        
<property name="scheduler" ref="schedulerFactory"/>     
    
</bean>
    
    
<bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        
<property name="targetObject" ref="ScheduleInfoAction"/>
        
<property name="targetMethod">
             
<value>setTaskTimeByPreference</value>
        
</property>
        
<!--property name="arguments">
            <list>
                <ref local="DataSource"/>
                <ref local="schedulerFactory"/>
            </list>
        </property
-->
        
<property name="concurrent" value="false"/>
    
</bean>
    
    
<bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
        
<property name="jobDetail">
            
<ref bean="ScheduleInfoActionFactory"></ref>
        
</property>    
        
<property name="startDelay">
            
<value>80000</value>
        
</property>
        
<property name="repeatInterval">
            
<value>50000</value>
        
</property>
    
</bean>
    
    
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
        
<property name="triggers">             
            
<list>                 
                
<ref local="CMSTransformCRMTrigger"/>             
                
<ref local="ScheduleInfoActionTrigger"/>             
            
</list>         
        
</property>
    
</bean>

ScheduleInfoAction是动态设置间隔时间的接口:
public class ScheduleInfoAction {

    
private Scheduler scheduler;

    
public void setTaskTimeByPreference() throws SchedulerException {
        
if (isStartCMSTransformCRMTask()) {
            SimpleTriggerBean trigger 
= (SimpleTriggerBean) scheduler.getTrigger("ScheduleInfoActionTrigger",
                            Scheduler.DEFAULT_GROUP);
            trigger.setRepeatInterval(Long.parseLong(Application.getSystemSettingService().getPrefValue(
"CMSPeriod")));
            scheduler.rescheduleJob(
"ScheduleInfoActionTrigger",
                    Scheduler.DEFAULT_GROUP, trigger);
        }
 
else {
            scheduler.shutdown();
        }

    }


    public
 boolean isStartCMSTransformCRMTask() {
        
return Application.getSystemSettingService().getPrefValue("CMSPeriod"!= null;
    }


    public
 Scheduler getScheduler() {
        
return scheduler;
    }


    public
 void setScheduler(Scheduler scheduler) {
        
this.scheduler = scheduler;
    }


}
  但是不知为和两个任务都不执行?
后面我再在程序启动时就通过ScheduleInfoAction的factoryBean
设置CMSTransformCRMTrigger其repeatInterval属性,只保留一个定时任务就可以了,
配置如下:
<bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
        
<property name="scheduler" ref="schedulerFactory"/>     
    
</bean>
    
    
<bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        
<property name="targetObject" ref="CMSTransformCRMEngine"/>
        
<property name="targetMethod">
             
<value>run</value>
        
</property>
        
<property name="concurrent" value="false"/>
    
</bean>
    
    
<bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
        
<property name="jobDetail">
            
<ref bean="ScheduleInfoActionFactory"></ref>
        
</property>    
        
<property name="startDelay">
            
<value>80000</value>
        
</property>
        
<property name="repeatInterval">
            
<value>80000</value>
        
</property>
    
</bean>
    
    
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
        
<pro