板桥,我在ejb中使用了castor,出现以下问题。

02-08-28 yfnew
我主要是打算在建数据库连接的类使用castor。把连结池等数据保存在xml文件中,与xml对应绑定的java类是DBPool.java,然后在dbconnection.java中对DBPool.java操作。

但总是出现找不到类的错误:

[Site] TRANSACTION ROLLBACK EXCEPTION:org/exolab/castor/mapping/Mapping; nestedexception is:

java.lang.NoClassDefFoundError: org/exolab/castor/mapping/Mapping

[Site] java.lang.NoClassDefFoundError: org/exolab/castor/mapping/Mapping

[Site] at com.db.DbConnectionManager.getConnection(DbConnectionManager.java:29)

这是什么问题呢?

yfnew
2002-08-28 16:28
DBPoolXml dbPoolXml = new DBPoolXml(); //1

Mapping mapping = new Mapping(); //2

mapping.loadMapping("config/mapping.xml"); //3

Unmarshaller un = new Unmarshaller(DBPoolXml.class);//4

un.setMapping(mapping); //5

在第2行代码的时候就出错了,找不到mapping类。我后来把相关的castor类add进了EJB的jar包,第2行代码就没问题了,但是第3行代码又出错了....

[Default] [Castor] Failed to locate messages resource org.exolab.castor.util.resources.messages

[Default] DbConnectionManager Exception:[Missing message mapping.nested]

为什么找不到mapping.xml呢?如果不用ejb而直接用javabean调用一点问题没有。

浆糊
2002-08-28 17:12
mapping.xml文件的位置不对阿,你放在什么地方啊。

yfnew
2002-08-28 19:39
mapping.xml放在jboss\bin的一个config目录下,放在这里应该没问题,在javabean访问是没问题的,但是EJB就有问题。

banq
2002-08-29 11:00
javabean和caster访问文件原理不一样。

castor中指定mapping.xml需要是绝对路径

yfnew
2002-08-29 16:11
其实我在javabean(如是testCastor.java)中调用castor的java绑定对象,比如是test.java(对应test.xml),不管是绝对路径还是相对路径都没问题。(我绝对路径是这样C:\\jboss_tomcat\\jboss\\bin\\config\\mapping.xml)

但是在ejb中调用了test.java的时候就会出异常。

[Default] [Castor] Failed to locate messages resource org.exolab.castor.util.resources.messages

真搞不懂怎么回事?

我想请问你们在ejb中调用castor绑定的java对象的时候会有问题吗?还有我用的环境是jboss2.4+tomcat32,一般哪个castor.jar文件放在那个目录?jboss\lib下,还是jboss\lib\ext下?还是相应的web目录\web-inf\lib下?

banq
2002-08-30 09:24
EJB容器中是无法访问本地文件的,因为EJB是在一个超服务器,跨服务器的容器中。

如何在EJB中使用Castor的XML数据绑定,我在实践中是回避这个问题,文件系统访问不放在EJB,这也符合EJB规范,in EJB no IO

yfnew
2002-08-30 14:59
根据这段时间的调试来看,一直用不了,但又不能确定。

现在终于知道确实不能访问的,我做开发的时候也死了这条心。

banq
2002-08-30 16:23
你的castor中文问题存在吗?

因为我现在开发的都是英文软件,根据我的经验,如果都统一成ISO8859_1 castor作为javabean的一种特殊,应该不会有问题。

yfnew
2002-08-31 09:16
中文问题确实有。

castor无法指定写入xml的encode,所以保存在xml文件的中文字是编码来着,但是读出到与其绑定的javabean中的时候,中文字显示良好。

浆糊
2002-08-31 10:54
NO!castor可以很好的解决中文问题,只要在你的数据原写入或者读出的时候指定gbk就OK了。当然这个可以作为一个配置。

banq
2002-09-01 07:36
我现在对付Java的中文问题解决通用方案是统一成ISO8859_1

浆糊,你的方案是什么?能否具体点?

浆糊
2002-09-01 11:23
jsp中的解决办法就是filter,数据库的就统一成数据库编码,不然数据库中会乱,虽然读出的时候不一定乱,有些数据库可以设置编码,这样就可以在数据库端解决。文件的就全用本地编码来操作,windows平台用GBK就可以。例如xml操作

banq
2002-09-01 12:50
主要是在Linux平台,windows平台我认为统一成GBK就没问题,

在linux平台,我现在采取的是统一成ISO8859_1。

还有一个问题是Java mail,我曾经遇到过,使用统一GBK编码在Linux上使用Java mail就无法发送中文内容,可能要设置Javamail编码为GBK. 象这样下去,每个资源都要设置一下编码是非常麻烦。

我听说unicode不错,不知Java支持否。

猜你喜欢