BPS 6.5 升级Jboss7时遇到的问题与解决方法(续)

4年前

八.default应用下的jdt-3.1.jar和jboss里的ecj-3.7.2.jar中的CompilationResult类冲突


原因:jboss的osgi modules底层提供了jdt功能的jar ecj-3.7.2.jar, 和eos应用中的jdt-3.1.jar版本冲突,其中JBoss版本的CompilerResult的getProblems()方法返回CategorizedProblem[], 而eos的jdt.jar返回的是IProblem[], 返回的参数已经不一致,但发现CategorizedProblem是IProblem接口的实现类(子类),由于我们无法更改JBoss,只能更改工作流的调用端代码,将IProblem改为CategorizedProblem即可。


解决方法:删除了default应用下面的jdt.jar,修改了com.primeton.workflow.commons.scriptshell项目(bps-server.jar)中的类com.primeton.workflow.commons.scriptshell. CompilerRequestor,将IProblem接口改为了CategorizedProblem抽象类(实现了IProblem接口),改过之后就可以使用jboss中的ecj-3.7.2.jar中的getProblems()方法,打项目级补丁。详细信息请参考升级包中的CompilerRequestor.java文件。


九.测试用例

com.bps.jtest.manager.wfquerymanagernew.QueryWorkItemsCriteriaTestCase.testQueryWorkItemsCriteriaCase1(2)的初始化错误:com.primeton.utp.core.junit.runner. FrameworkInitializationError。

原因:utp框架在检查测试用例时遇到有些用例的setup()方法是protected类型,无法调用,报错,用例没有执行。这主要因为protected是原先的测试用例,使用junit3.8, 而新的用UTP平台,升级到junit4.x,需要判断setup方法是public方法,这个仅仅是测试用例的验证错误,还没有运行到业务的用例。


解决方法:将用例的protected类型的方法改为了public类型,打测试补丁。


十.测试用例

com.bps.jtest.manager.wfquerymanagernew.QueryProcessInstancesCriteriaTestCase.testQueryProcessInstancesCriteriaCase1(3)(4)与问题八的用例一起跑时出错,与问题九一起跑正常,然后再单独跑也正常。

调试发现用例的setup方法没有执行。


原因是用例没有按照4.0的junit规范编写,setup方法没有加@before标记。加上之后正常。


十一.测试事务回滚,回滚失败


经调试发现jboss的事务管理器没有启动,检查配置后,发现数据源配置里的jta配置为false,改为true之后,测试通过。

COMMENTS

需要 后方可回复
如果没有账号可以 一个帐号。