FDS是什么就不过多解释了,参考“
Tempo针对BPEL4People的实现构架”和“
Tempo研究之FDS”即可。
和Tempo的负责人Nico聊天的时候,问他们如何调试fds,nico说他们都是依靠testcase来调试和测试的,不是在eclipse中debug。我想可能是因为他们都比较熟悉Tempo了,所以运行testcase和分析问题都比较得心应手。而对于我来讲,我对Tempo还只是一个初学者,Tempo项目中有很多testcase,但是我不是很清楚输入输出,而且围绕web service的soap消息又很多,实在是仅仅依靠testcase很难track code。
Tempo中,FDS的结构是最为简单,所以决定先从FDS入手,尝试在eclipse中debug。上一篇blog “
Tempo研究之在Eclipse中运行Intalio Server” 中已经讲了如何在eclipse建intalio server以及运行。
我们进入/tempo/trunk代码目录,也就是从svn上更新下来的目录,采用 build eclipse 命令,可以为各个组件产生各自的eclipse项目文件。当然,在此之前,你需要参考我的另一篇blog “
Build Tempo” 来了解如何build。
不过,采用build eclipse命令所产生的项目,只是普通的java project,而不是可以在eclipse中作为web app的web app project。但是这并不是很难的事情,你可以利用现有/tempo/trunk/fds目录在eclipse(lomboz)中新建一个Dynamic Web Project。这一步就不多叙述,结果如下:
然后需要更改geronimo-web.xml配置。因为这个配置是默认生成的,并不包含一些dependencies。可以参考intalio-bpms\repository\org\intalio\tempo\workflow\fds\5.0.0.3\fds-5.0.0.3.war\WEB-INF 目录下的geronimo-web.xml文件,获取dependencies配置,修改后的内容如下:
<?
xml version="1.0" encoding="UTF-8"
?>
<
web-app
xmlns
="http://geronimo.apache.org/xml/ns/j2ee/web-1.1"
xmlns:nam
="http://geronimo.apache.org/xml/ns/naming-1.1"
xmlns:sec
="http://geronimo.apache.org/xml/ns/security-1.1"
xmlns:dep
="http://geronimo.apache.org/xml/ns/deployment-1.1"
>
<
dep:environment
>
<
dep:moduleId
>
<
dep:groupId
>
org.intalio.tempo.workflow
</
dep:groupId
>
<
dep:artifactId
>
fds
</
dep:artifactId
>
<
dep:version
>
5.0.0.3
</
dep:version
>
<
dep:type
>
war
</
dep:type
>
</
dep:moduleId
>
<
dep:dependencies
>
<
dep:dependency
>
<
dep:groupId
>
xalan
</
dep:groupId
>
<
dep:artifactId
>
xalan
</
dep:artifactId
>
<
dep:version
>
2.7.0
</
dep:version
>
</
dep:dependency
>
<!--
2.6.2 is required
-->
<
dep:dependency
>
<
dep:groupId
>
xerces
</
dep:groupId
>
<
dep:artifactId
>
xercesImpl
</
dep:artifactId
>
<
dep:version
>
2.8.1
</
dep:version
>
</
dep:dependency
>
<
dep:dependency
>
<
dep:groupId
>
xom
</
dep:groupId
>
<
dep:artifactId
>
xom
</
dep:artifactId
>
<
dep:version
>
1.1
</
dep:version
>
</
dep:dependency
>
<
dep:dependency
>
<
dep:groupId
>
dom4j
</
dep:groupId
>
<
dep:artifactId
>
dom4j
</
dep:artifactId
>
<
dep:version
>
1.6.1
</
dep:version
>
</
dep:dependency
>
<!--
3.0 is required
-->
<
dep:dependency
>
<
dep:groupId
>
commons-httpclient
</
dep:groupId
>
<
dep:artifactId
>
commons-httpclient
</
dep:artifactId
>
<
dep:version
>
3.1-alpha1
</
dep:version
>
</
dep:dependency
>
<
dep:dependency
>
<
dep:groupId
>
jdom
</
dep:groupId
>
<
dep:artifactId
>
jdom
</
dep:artifactId
>
<
dep:version
>
1.0
</
dep:version
>
</
dep:dependency
>
<!--
1.0 is required
-->
<
dep:dependency
>
<
dep:groupId
>
stax
</
dep:groupId
>
<
dep:artifactId
>
stax-api
</
dep:artifactId
>
<
dep:version
>
1.0.1
</
dep:version
>
</
dep:dependency
>
<!--
1.2 is required
-->
<
dep:dependency
>
<
dep:groupId
>
commons-codec
</
dep:groupId
>
<
dep:artifactId
>
commons-codec
</
dep:artifactId
>
<
dep:version
>
1.3
</
dep:version
>
</
dep:dependency
>
</
dep:dependencies
>
</
dep:environment
>
<
context-root
>
/fds
</
context-root
>
</
web-app
>
此时,暂且不要把fds工程增加到 eclipse中建立的 Intalio Server(其实是Geronimo Server),先启动server,然后进入Geronimo Web Console,将原有的org.intalio.tempo.workflow/fds/5.0.0.3/war这个web app war进行unintall操作。然后再将fds增加到server上,并同步。
但是,此时还有问题的,因为从svn上获取的fds代码,已经比原Intalio Server中的fds war版本更新,有一定的变动。需要将 fds-config.xml 文件,放到intalio-bpms\var\config目录下,而不是原来的fds war/web-inf/classes中。
做完这些操作,即可在eclipse中调试FDS了。