2017-08-02 121 views
1

我正在使用JAR库,其中包含@WebService带注释的类和其他Java EE注释。问题是,Weblogic 12c会自动发现这些注释并提供服务。这不是我的意图,而是我想仅将JAR用作其他Java EE项目中的实用程序库,并考虑此库忽略来自Weblogic视角的所有Java EE相关配置。Java EE,如何忽略某些JAR或包中的注释

基本上,所讨论的库是另一个Java EE项目,它被无情地捆绑在一个JAR中,但修改这个库是没有问题的,因此我需要忽略该库中的所有Java EE东西。

那么,如何通过自动发现和配置来指示weblogic忽略此特定JAR归档中的所有Java EE相关内容(或者某些包说明符下的所有类)呢?

我想到的一个解决方案是metadata-complete=trueweb.xml似乎忽略这些注释。但是,我不确定它是否仅忽略JAR库中的注释或项目本身的注释。

+0

你是如何构建你的应用程序? –

+0

这是具有多个EJB和Web模块的典型EAR。 JAR库驻留在lib目录中。 –

+0

您使用什么工具来构建罐子,Web模块,ejb模块和库? –

回答

1

您可以阅读关于metadata-completehere的解决方案。这个解决方案实际上是为了改善大规模Java EE项目的部署性能而创建的。

您应该尝试在库项目的web.xml文件中设置metadata-complete=true,然后根据此更改创建一个新的jar。这违背了你重构图书馆代码的意愿,不过这是一个小改动,不会占用你很多时间。

但是,我不确定它是否仅忽略JAR库中的注释或项目本身的注释。

你说得对。如果您在项目的web.xlm文件中进行此更改,那么您也会影响您的注释。

+0

另一方面,库包含实际使用的Web服务客户端(用@ @ WebService @注解的接口和用@ WebServiceClient注解的方法)端口类型代理)。它是否也会禁用JAX-WS客户端的功能而无需其他XML配置?核心问题是,有'@ WebService'实现类不应该在那里,但不幸的是紧密耦合在一起。 –

+0

@TuomasToivonen这不是问题。这个配置是用部署描述符(xml文件)“替换”注释的。功能保持不变。所以'@ WebServiceClient'注解提供的功能仍然存在。不同的是,这个功能是由部署描述符触发的,而不是像上面提到的注释。 –