请大家注意!!!
在使用 DataService 时,服务器端的 LCDS 中对应的 data-management-config.xml 配置文件写好后
客户端的 flex 程序跑起来后不能从服务器端正确的获取数据
并在 Tomcat 的控制台中输出类似下面的信息时
[LCDS]Received command: TCCommand [ Cmd: 0, MethodName: null, TrxID: 2.0]
[LCDS]Serializing AMF/RTMP response
Version: 3
(Command method=_error (0) trxId=2.0)
(Typed Object #0 'flex.messaging.messages.ErrorMessage')
headers = (Object #1)
rootCause = (Typed Object #2 'java.lang.NoClassDefFoundError')
message = "javax/transaction/SystemException"
localizedMessage = "javax/transaction/SystemException"
cause = (Typed Object #3 'java.lang.ClassNotFoundException')
message = "javax.transaction.SystemException"
localizedMessage = "javax.transaction.SystemException"
cause = null
exception = null
body = null
correlationId = "DA3456AC-2B44-D586-64B2-A6DB1C059FC0"
faultDetail = null
faultString = "There was an unhandled failure on the server. javax/transaction/SystemException"
clientId = "FC25AC66-C590-86C9-A820-A6DB06A35839"
timeToLive = 0.0
destination = "student"
timestamp = 1.278404665754E12
extendedData = null
faultCode = "Server.Processing"
messageId = "B05CFD08-FA0F-005D-C59A-D64339C803B7"
关键的几个条:
rootCause = (Typed Object #2 'java.lang.NoClassDefFoundError') message = "javax/transaction/SystemException" localizedMessage = "javax.transaction.SystemException" faultString = "There was an unhandled failure on the server. javax/transaction/SystemException"
是因为缺失了 jta-spec1_0_1.jar 这个包
-------------------------------------------------------
下面是解决这个问题的过程和分析思路,希望对大家会有些用
在flex和java配合并在建立项目时IDE会让我们选择lcds.war文件,如下图:
不要太相信 lcds.war 里面会什么都有。
在我研究 DataService 并配置好服务器端的 data-management-config.xml 文件后
会有很多的信息输出,起初根本没有想到会是缺少jar包
因为 lcds-sample 里面也有很多 DataService 的应用嘛
我用的也是 lcds 自带的 lcds.war
开始的时候以为是代码写错了,检查了很多遍没有发现问题
后来,实在是无耐,在大量的输出信息中找到了最上面贴出来的那些信息中
发现 java.lang.NoClassDefFoundError 和 javax/transaction/SystemException
这两句话,那就先解决缺包的问题,搞了个jta的jar包扔到项目的lib下
问题解决了。
在 lcds.war 文件中的 lib 里有38个文件(包括两个txt文件)
lcds-samples.war 文件中的 lib 里有39个文件(包括两个txt文件),多了一个 hsqldb.jar ,是用来连接sample数据库的
lcds自带的sample程序为什么能好使呢?
古怪出在lcds安装目录下tomcat中的lib文件夹
在这个文件夹中会比正常的tomcat多三个文件夹
分别是 activemq4.1.1 jotm2.0.10 lcds
而 jta-spec1_0_1.jar 这个包就在 jotm2.0.10 中
我使用的IDE是 flash builder 4 中文版 + java 插件 + j2ee 插件 (中英文混合的IDE用起来是很恶心的)
如果 flash builder 4 是装在 MyEclipse 中可能不会出现上面问题
因为在MyEclipse中的web项目,
MyEclipse会自动带有很多相关的javax包
使用版本
Flex SDK 3.5
IDE是 flash builder 4 中文版 + java 插件 + j2ee 插件
Adobe® LiveCycle® Data Services ES2
Version 3.0
October 2009
欢迎大家留言讨论
转载请注明出处