我有一个关于如何部署包含CDi实现和Webapp的多个jar的问题。
这是我的罐子结构
-------- ---------- ------------
| WAR | <-- | API Jar | <-- | Data Jar |
-------- ---------- ------------
^
|
--------------
| Common Jar | And many more implementations
--------------
WAR本身就是webapp,它使用在API Jar中定义的类。 API jar仅包含接口,注释,非逻辑类,限定符等。
API的实现存储在不同的JAR中,按主题划分。因此,所有在数据,安全性,日志记录,通用等方面的数据访问/操纵实现。此实现依赖于API Jar以及库。所有程序包都传达低谷事件。
我们在每个实现和Web应用程序中都使用CDI。完整的配置仅在WAR中。
我想将所有东西部署在一个EAR中。这就是我使用的文件结构:
EAR
- META-INF/application.xml
- api.jar
- api classes, no beans.xml here
- common.jar
- api implementation for common project classes
- META-INF/beans.xml
- data.jar
- api implementation for data classes
- META-INF/beans.xml
- logging.jar
- api implementation for logging classes
- META-INF/beans.xml
- webapp.war
- classes
- ( project classes which uses the api)
- META-INF
- services
- persistence.xml
- WEB-INF/beans.xml
- beans.xml
- web.xml
我的application.xml看起来像这样:
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6">
<display-name>test-ear</display-name>
<module>
<java>api-1.0.0.jar</java>
</module>
<module>
<java>common-package-1.0.0.jar</java>
</module>
<module>
<java>data-package-1.0.0.jar</java>
</module>
<module>
<java>logging-package-1.0.0.jar</java>
</module>
<module>
<web>
<web-uri>test-war-1.0.0.war</web-uri>
<context-root>/war</context-root>
</web>
</module>
</application>
我的问题是,现在根本不起作用。 CDI容器抱怨缺少一些bean。我在google上搜索了有关的内容,发现其中包含beans.xml的jar被部署为ejbModule,但是在这里我需要为所有内容创建一个ejb.jar。另一个结果说,我只需要将所有依赖项添加到WEB-INF / lib中的WAR文件。同样的抱怨在这里。
我无法运行此程序,并尝试在此处寻求帮助。
作为服务器,我想使用Websphere(也许还有tomee)。
编辑:Maven用于将所有文件组装在一起。
非常感谢,如果有人可以帮助我:)
参考方案
您是否尝试过在战争清单中引用您的罐子?
类似于Class-Path: api.jar data.jar logging.jar common.jar
最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…
Java可执行jar。这段代码做什么? - java我正在查看Yahoo的YUI压缩程序可执行jar,它们具有此类,从清单文件链接为“ Main-Class”:package com.yahoo.platform.yui.compressor; import java.lang.reflect.Method; public class Bootstrap { public static void main(S…
无法从ArrayList <String>转换为List <Comparable> - java当我写下面的代码时,编译器说 无法从ArrayList<String>转换为List<Comparable>private List<Comparable> get(){ return new ArrayList<String>(); } 但是当我用通配符编写返回类型时,代码会编译。private List&l…
合并List <T>和List <Optional <T >> - java鉴于: List<Integer> integers = new ArrayList<>(Arrays.asList( 10, 12 )); List<Optional<Integer>> optionalIntegers = Arrays.asList( Optional.of(5), Optional.em…
展平地图中的列表列表 - java我有订单流(来源是订单列表)。每个订单都有一个客户和一个OrderLine列表。我要实现的目标是在一张简单的列表中以客户为关键的地图,并将属于该客户的所有订单行作为值。现在,通过执行以下操作,我现在管理的内容返回了Map<Customer>, List<Set<OrderLine>>>:orders .collect…