- 浏览: 129355 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
storyxsj:
你好,我在使用RCP读配置文件的时候也碰到读配置文件的问题,我 ...
Eclipse RCP产品导出引用外部配置文件 -
zhangxiong0301:
另外,这个工程的启动类是SimpleHttpServer吧,启 ...
ODE源码导入Eclipse工程成功执行 -
zhangxiong0301:
kungstriving 写道zhangxiong0301 写 ...
ODE源码导入Eclipse工程成功执行 -
kungstriving:
zhangxiong0301 写道博主是以前是高性能中心的吗? ...
ODE源码导入Eclipse工程成功执行 -
zhangxiong0301:
博主是以前是高性能中心的吗?我现在在接着做飞机协同设计系统的项 ...
ODE源码导入Eclipse工程成功执行
ODE是一个开源的BPEL语言引擎(它的介绍可以看我的其他BPEL标签下的文章),使用它的源码进行修改来构造符合定制需求的一个新的业务流程执行引擎。由于我对Eclipse平台相对较为熟悉,所以想办法将ODE的源码通过Eclipse工程的方式重现出来,这样便于二次开发。在导入Eclipse工程的过程中,出现了很多问题,下面将详细的讲述具体每一步如何进行操作,并对我所遇到的问题进行解决。
从ODE官方网站下载的源码包(使用http方式下载,没有使用svn),解压之后只是纯代码,包括测试用代码、一些配置文件。但没有依赖的第三方包,也没有相应的Eclipse工程文件,也就是说无法直接导入到Eclipse环境中进行开发的,首先使用ODE官网上的说法使用ruby工具进行构建,这里可以参考下构建ODE和编译Eclipse工程。虽然都是英文,但还都是简单易懂的。照上面的文章将会生成大概20多个工程,因为ApacheODE的工程师们不是通过Eclipse开发的,他们使用Ruby的工具,buildr来构建项目,多个工程之间的依赖关系通过buildr来完成的。
这20多个Eclipse工程虽然可以通过import的方式导入到Eclipse环境下,但是还不能运行。首先,很多第三方Jar包没有导入,这些jar文件是你在刚才编译的时候通过maven这个工具自动下载了,一般目录在C:\Documents and Settings\Administrator\.m2\repository下,你需要在你的Eclipse种设置一个变量来指向这些jar(可以看我的另一篇文章Eclipse导入jar),从而很容易的导入。
接下来,ODE项目为一个WEB工程,其最终的部署运行是放在Tomcat中进行的,故需要为其创建一个WEB工程,导入源码,调整好各个包之间的依赖关系。
注意:下载之后的源码是分为很多个工程的(刚才已经说过),可以将其中的各个src包中的java源码copy出来,组成一个工程(这个工作必须非常小心,各个工程中的所有源码包都必须拷贝出来,并且正确的放在不同的包中,可以在Eclipse环境下作这个工作,相对较为容易),这样便于调试、和查看。还需要将刚才提到的所有jar文件导入到工程中,在项目编译的过程中,你还会看到很多的错误信息,大部分都是jar文件找不到,或者版本不对(这个问题大概缠绕了我3天时间),然后你需要一个一个的解决。很枯燥!
然后,再将ode-war包下的axis2-web文件夹拷贝到工程中的webcontent文件夹下,这样是为了便于从浏览器访问部署的服务,该部分全部是jsp文件,主要负责了页面显示(其实主要还是Axis2的界面显示),没有太多的逻辑代码。
接下来,将ode-war包下的/WEB-INF/web.xml文件拷贝到工程下的webcontent下的WEB-INF文件夹下。
接下来,配置一个服务器,一般使用Tomcat5.5 。接着将该工程部署到tomcat中的webapps文件夹下,这样就部署成功了,根据web.xml文件可以得知整个工程的加载顺序,其最先是从
org.apache.ode.axis2.hooks.ODEAxisServlet
该servlet开始,在其中的init方法中添加输出语句,便可以在tomcat的控制台下看到,这样便可以修改源码扩展ODE了。
以下是一些具体问题的解决,但是都很难发现的问题
然后删除工程ode-jacob-ap中对于tools.jar的 依赖,再将ode-bpel-api工程中org.apache.apche.ode.bpel.evar
改成org.apache.ode.bpel.evar。
问题解决:
1)报错:javax.persistence.*** 无法找到persistence的provider
这是由于在META-INF文件夹下没有persistence.xml文件,该文件在
源码的ode-dao-jpa工程的resources文件夹下可以找到
2)报错:无法创建derby数据库的物理连接
这是由于derby的类库文件的版本不一致造成,需要将derby 10.4版本
老版本必须从classpath中删除
3)报错:无法加载schematypesystem
向工程导入ode-schema-RC1.jar
4)流程部署报错:setFeature or setParameter无法执行
删除工程导入的xercesImpl.jar的较低版本
小结:由Ruby的buildr工具导出的ODE源码工程还是有很多错误的地方,也许 ODE的开发团队并不是采用Eclipse开发,所以才会有这么多的问题未解决。一 般的错误都是由于导入包的版本错误所导致,一般删除较低版本便可以。现在导入的包数量太大,包括了很多的无用包,等到对ODE源码有了更全面的了解之后可以对这些jar包进行一个整理,没有引用到的便可以删除。
接下来,我还会对ODE做更进一步的分析和学习,希望有相同需求的朋友能共同学习。
评论
-r processes,最后一个参数是指向processes文件夹吗?一开始只是在浏览器里面输入调用URL(如,http://localhost:8080/axis2/services/RService/process?input=hello)时候才会出现刚刚那些错误代码d,但是从此之后在每次run这个工程时候都会报这个错误,很不明白?麻烦师兄帮忙,有点急,感谢师兄了先!
居然这样都可以,呵呵,这个源码放在哪里都记不清了,都已经两年多了,我回去找一找看还能找到不
师兄你好,我想问个问题。你还记得那个ODEFullDebug工程吗?我在实验室找到了那个ODEFullDebug eclipse 工程。当我运行部署好的BPEL流程时候,发现报了很多错误?对于那个工程,我只是修改了数据库配置(改成连接我自己的mysql数据库),然后把BPEL流程放在工程的processes目录下。具体的错误都是跟数据库有关的,我还不太明白。一部分错误代码如下:
<openjpa-1.3.0-SNAPSHOT-r422266:724491 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: Failed lazy association with ManagedConnection {INSERT INTO ODE_EVENT (EVENT_ID, DETAIL, DATA, SCOPE_ID, TSTAMP, TYPE, INSTANCE_ID, PROCESS_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)} [code=0, state=null]
at org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4242)
at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4207)
at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102)
at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:88)
at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:64)
at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:83)
at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:548)
at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:105)
at org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59)
at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:89)
at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:72)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:711)
at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2011)
at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1909)
at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1827)
at org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
at org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:498)
at org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:400)
at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:238)
at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:226)
at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:404)
at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:401)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Failed lazy association with ManagedConnection {INSERT INTO ODE_EVENT (EVENT_ID, DETAIL, DATA, SCOPE_ID, TSTAMP, TYPE, INSTANCE_ID, PROCESS_ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)} [code=0, state=null]
at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:202)
at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$000(LoggingConnectionDecorator.java:58)
at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:230)
at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:164)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager$RefCountConnection.prepareStatement(JDBCStoreManager.java:1525)
at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:153)
at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.prepareStatement(PreparedStatementManagerImpl.java:241)
at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:106)
at org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:80)
at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:93)
at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:81)
... 23 more
NestedThrowables:
java.sql.SQLException: Failed lazy association with ManagedConnection
at org.tranql.connector.jdbc.ConnectionHandle.getManagedConnection(ConnectionHandle.java:73)
at org.tranql.connector.jdbc.ConnectionHandle.prepareStatement(ConnectionHandle.java:269)
at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:166)
at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:227)
at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:164)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager$RefCountConnection.prepareStatement(JDBCStoreManager.java:1525)
at org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:153)
at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.prepareStatement(PreparedStatementManagerImpl.java:241)
at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:106)
at org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:80)
at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:93)
at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:81)
at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:548)
at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:105)
at org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59)
at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:89)
at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:72)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:711)
at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2011)
at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1909)
at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1827)
at org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
at org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:498)
at org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:400)
at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:238)
at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:226)
at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:404)
at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:401)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
师兄帮我分析一下这个大概是什么问题?应该怎么解决?我听说这个工程是你一手做的,你应该还比较熟悉的啦。这个工程我直接拷到eclipse里面,你看还需要什么配置之类的吗?另外可以把这个工程我给介绍一下吗:这个工程是怎么组织的,然后怎么集成服务容器的,具体是怎么建立这个工程的(你这篇文章对我来说有点没看到具体细节,嘿嘿)。有劳师兄了。。。。
居然这样都可以,呵呵,这个源码放在哪里都记不清了,都已经两年多了,我回去找一找看还能找到不
谢谢.
是啊,那该有多好啊!!
谢谢.
然后的步骤?
博主有时间的话把导入配置的过程写一下吧
谢谢!
另外我也正想研究下ODE
有空多交流!
谢谢你,
我会尽快补上
博主有时间的话把导入配置的过程写一下吧
谢谢!
另外我也正想研究下ODE
有空多交流!
发表评论
-
复杂业务流程监控(基于Apache ODE)
2010-03-11 10:37 2092流程运行状况的监控 ... -
扩展Apache ODE --服务的动态选择
2010-03-11 10:32 1718一般情况下流程运行中所涉及到的Web服务实例都是固定的, ... -
Apache ODE 流程运行过程解析
2010-03-11 10:27 1965流程运行概述 流程运行需要引擎首先创建该流程的实例,当然实例 ... -
Apache ODE 流程编译过程解析
2010-03-11 10:15 2098流程编译过程包括了 ... -
跨域的分布式的BPEL执行引擎
2010-01-18 21:38 1560这是我的硕士毕业论文题目了 前一个月一直在家里呆着,毕 ... -
Apache ODE1.3.3源码Eclipse运行
2009-08-31 09:16 2381转载请注明出处:http: ... -
Intalio Tempo研究之三(安装部署)
2009-07-06 11:01 1236Intalio Tempo研究之三(安装部署) -
Intalio Tempo研究二 (如何创建和完成一个人工任务)
2009-05-23 11:17 1386Intalio Tempo研究一(架构设计) Temp ... -
ApacheODE研究二(所支持的BPEL2.0标签)
2009-05-23 11:03 1412ApacheODE研究一(架构介绍) Apache ODE所 ... -
Intalio Tempo研究一(架构设计)
2009-04-22 10:54 1810Intalio Tempo架构设计 1. 文档编写目的 该 ... -
Apache ODE研究一(ODE架构介绍)
2009-04-15 09:21 6511这篇文章大部分内容翻译自ODE主页http://ode.apa ... -
ActiveBPEL引擎研究一(工作流介绍)
2009-03-04 04:39 1638项目要用到工作流引擎,而且是整个系统的核心部件。所以, ... -
ActiveBPEL引擎研究二(流程部署)
2009-03-24 09:00 1732自从ActiveBPEL的设计器商业化之后,它的ActiveB ...
相关推荐
ODE 源码 vs2008 物理引擎 开源的游戏开发物理引擎!
内涵ODE源码、实例、本人收集的网上ODE经典资料,希望能帮到各位。
BPEL实例,Apache-ODE,Eclipse 该教程详细讲述了开发一个BPEL业务流程的详细步骤。先手动写好两个服务,一个是加法服务,一个是减法服务,然后希望构建一个bpel流程,该流程能够根据用户的输入来决定是调用加法服务...
搭建BPEL所必须的入门文档,包括了在Eclipse中如何加入ODE的插件和一个小例子
ODE45_ODE45_常微分方程_源码.zip
天津大学非线性ode及在工程中的应用第一次作业源代码,应随课堂作业使用,包含作业中制作隐函数图像,画微分方程方向场以及求解线性齐次方程组
常微分方程用matlab语言编程求解,例子中有中文附录详细说明,是入门用Matlab求解数学问题的优秀案例
行星齿轮动力学分析微分方程的matlab中ode45求解
对非线性系统进行预测控制时,首先要对非线性方程进行求解。通过网上搜查得知matlab提供了ode45(常微分方程的数值求解)。
matlab运用ode45的简单调用解微分方程范例。
ode45的使用,关于dydt,关于ode45的参数,等等
solving differebntial equation
This Matlab code will help to solve ODE equations
ODE中文参考资料ODE中文参考资料ODE中文参考资料ODE中文参考资料
三自由度振动系统simulink模型求解以及状态方程的ode45求解器求解
ode的碰撞检测中文学习资料,想要使用ode物理引擎做碰撞检测的朋友可以看看
ODE(Open Dynamic Engine)是一款动力学仿真软件。可以自由下载,然而如何入门学习是大多数人的一个难题。本程序来自日本人所写的ODE动力学仿真一书的例子。具有很强的针对性!
大牛所做的非常经典的ode教程,含各种高级ode内容,值得拥有~~~
ODE的关键组成部分包括ODE BPEL编译器,ODE BPEL引擎 Runtime,ODE数据访问对象( DAOs ) ,ODE整合层(ILS) ,以及用户工具。
[E3ODE专用MM] multiMAN 4.50.01 BASE with SHOWTIME4MM for BD-R and ODE 这个是E3ODE硬破版专用MM 使用时需接网线,不然卡开头.