1

我正在开发一个 Java EE 6 自下而上的 JAX-WS 来公开一个 EJB3.1 无状态会话 bean。WAR 中的 Web 服务无法在部署时安装,因为它引用了一个可以假设尚未加载的外部 jar(或共享库)。

常见的建议是将 jars 包含在 /lib 文件夹中,这确实可以解决问题,但是 jars 需要保留在此外部共享库位置而不是 ear 文件中,因为它们总计 30MB。

有哪些技术可以在 Websphere (WAS v.8) 环境或任何服务器环境中解决此问题。我发现的一些建议包括:

   1. define classpath in META-INF file.    
   2. define the resources in deployment.xml    
   3. alter class loading order    
   4. (from ibm) In the case where the jars are part of a Shared Library configured on WebSphere Application Server, then a User Library must be used to configure the project for development before generating the WebService.

但是,我未能在这些领域在线找到任何帮助。是否有另一种技术,或者有没有人知道如何做到这一点?提前致谢。

编辑:如果我使用类路径在 META-INF 中指定库,它们会在扩展、共享库等之前加载,但它们仍然在 WAR 之后加载,这是不好的。同样,这不是运行时问题,因为 Web 服务是在部署时动态创建的。

4

1 回答 1

1

我向 IBM 提交了一张票。Web 服务引用的库在部署期间是必需的,并且必须以某种方式捆绑到 Ear 中。我把它们扔进了 web-inf/lib 文件夹。但是,如果引用的库随后依赖于其他库,则可以将这些库放置在共享库中。对我来说似乎也很奇怪,但让我们都承认“共享库”无论如何都是一种黑客行为。

如果您仍然有问题,只需确保您的类加载设置为 parent_last。

于 2012-09-26T20:42:39.147 回答