关于ejb的ear包

在工作中要使用wtc将weblogic与tuxedo进行相互通讯,在weblogic以ejb的方式发布,通过wtc虚拟为tuxedo server,可以使tuxedo 通过client或域通讯的方式进行服务调用。

但是在ejb的发布方面出现了问题:在weblogic10.0中发布ejb时,出现为找到ejb类的错误,检查后,ejb类存在,目录正确。遂怀疑是weblogc和eclipse的jdk版本不同,检查后又被推翻。

就把重点放在了ejb的jar中meta-info目录下的menifest文件,通过google,查到了menifest的一些基本注意事项:

 

1、manifest 文件的格式——每一行都是 名-值 对应的。

属性名开头,接着是 ":"+" "(注意冒号后有空格) ,然后是属性值

2、总是以Manifest-Version属性开头

3、每行最长72个字符,如果超过的化,采用续行

4、确认每行都以回车结束,否则改行将会被忽略(所以在文件的最后一行一定要至少有一个回车

5、如果Class-Path 中的存在路径,使用"/"分隔目录,与平台无关;各个jar包名以空格分隔。

6、使用空行分隔主属性和package属性

7、使用"/"而不是"."来分隔package 和class ,比如 com/example/myapp/

8、class 要以.class结尾,package 要以 / 结尾 


我出现问题的原因就是在上面的第三条,因为此ejb引用较多的外部jar包,我将这些jar包名以空格分隔,以一行的形式将所有class-path依赖的jar包名列了出来。这样在读取manifest文件的时候就会出现问题。但为何会报找不到ejb类的错,有些费解,也正是因为这个把我引向了错误的方向,研究了好几天才终于解决此问题。

以下为manifest文件实例
错误写法:
Manifest-Version: 1.0
Class-Path: log4j-1.2.11.jar ojdbc14.jar weblogic.jar xfire-core-1.2.3.jar xfire-generator-1.2.3.jar xfire-java5-1.2.3.jar xfire-jaxb2-1.2.3.jar xfire-jaxws-1.2.3.jar xfire-jsr181-api-1.0-M1.jar xfire-spring-1.2.3.jar xfire-ws-security-1.2.3.jar xfire-xmlbeans-1.2.3.jar xpp3-1[1].1.3.4d_b4_min.jar xstream-1.3.1.jar commons-httpclient-3.0.jar  c3p0-0.9.0.jar commons-codec-1.3.jar commons-io-1.4.jar commons-logging-1.0.4.jar jdom-1.0.jar jsr173_api-1.0.jar wsdl4j-1.5.2.jar wstx-asl-3.0.1.jar xfire-aegis-1.2.3.jar xfire-annotations-1.2.3.jar
 
正确写法:
Manifest-Version: 1.0
Class-Path: log4j-1.2.11.jar ojdbc14.jar weblogic.jar  xfir
 e-core-1.2.3.jar xfire-generator-1.2.3.jar xfire-java5-1.2
 .3.jar xfire-jaxb2-1.2.3.jar xfire-jaxws-1.2.3.jar xfire-j
 sr181-api-1.0-M1.jar xfire-spring-1.2.3.jar xfire-ws-secur
 ity-1.2.3.jar xfire-xmlbeans-1.2.3.jar xpp3-1[1].1.3.4d_b4
 _min.jar xstream-1.3.1.jar commons-httpclient-3.0.jar  c3p
 0-0.9.0.jar commons-codec-1.3.jar commons-io-1.4.jar commo
 ns-logging-1.0.4.jar jdom-1.0.jar jsr173_api-1.0.jar wsdl4
 j-1.5.2.jar wstx-asl-3.0.1.jar xfire-aegis-1.2.3.jar xfire
 -annotations-1.2.3.jar
 

 

你可能感兴趣的:(eclipse,spring,log4j,weblogic,ejb)