weblogic程序移植到jboss上的一个问题解决方法,j2ee,原创

去年在做系统的时候oracle数据库,开始用的weblogic做ejb服务器,后来要移植到jboss上,程序中数据库设计部分很多表的主键我设计的方案时要求用序列生成后再转换成varchar2型,同事们在做的时候直接在ejb中定义相应的主键为long,如此就可以直接运用ejb的primarykey 的auto generate了,型号weblogic cmp在存贮的时候对long自动转换成varchar2进了数据库。但是移植到jboss后发现部署失败,具体的异常不及的了,大概就是这个数据类型不匹配的问题,在findByPrimaryKey中。怎么办?总不能修改那几百个cmp为主键string吧?况且修改后ejb的primary key 的auto generate也不能用了,很麻烦。

//本人原创runnerrunning@163.com转载请保留本信息
//http://blog.youkuaiyun.com/runnerrunning
//大家看了别忘了点右边的广告阿支持一下runnerrunning@163.com

后来想到jboss的   jboss4/server/default/conf/standardjbosscmp-jdbc.xml中定义了ejb中引用的数据的类型及函数,于是试验寻找到     

 <type-mapping>
         <name>Oracle9i</name>

在其中寻找一个不长用的函数,比如

         <function-mapping>
            <function-name>length</function-name>
            <function-sql>length(?1)</function-sql>
         </function-mapping>

修改为

         <function-mapping>
            <function-name>length</function-name>
            <function-sql>UF_length(?1)</function-sql>
         </function-mapping>

然后在oracle数据库中定义UF_length(?1),其作用为to_char(),把整形转换为varchar2

runnerrunning@163.com 原创

然后修改cmp中的findByPrimaryKey方法,where pk_no = length(?)

再编译大包部署,成功了

这个问题解决了,但是偶感觉jboss等开源服务器和商业服务器确实在可用性和稳定性,代码健壮性上和商业软件确实还有距离。

 //本人原创runnerrunning@163.com转载请保留本信息
//http://blog.youkuaiyun.com/runnerrunning
//大家看了别忘了点右边的广告阿支持一下runnerrunning@163.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值