java - Maven EAR + WAR + JAR
问题描述
我有 3 个项目(使用 Maven):war、ejb 和 ear,我正面临这个问题:
我的war
项目有一个ejb
依赖,所以我把......
<dependency>
<groupId>my.company.name</groupId>
<artifactId>ejb-module</artifactId>
<version>1.0</version>
<type>ejb</type>
<scope>provided</scope>
</dependency>
...并ear
具有ejb
和war
依赖关系:
<dependency>
<groupId>my.company.name</groupId>
<artifactId>web-module</artifactId>
<version>1.0</version>
<type>war</type>
</dependency>
<dependency>
<groupId>my.company.name</groupId>
<artifactId>ejb-module</artifactId>
<version>1.0</version>
<type>ejb</type>
</dependency>
...
<configuration>
<filtering>true</filtering>
<version>7</version>
<modules>
<webModule>
<groupId>my.company.name</groupId>
<artifactId>web-module</artifactId>
<contextRoot>/</contextRoot>
</webModule>
<ejbModule>
<groupId>my.company.name</groupId>
<artifactId>ejb-module</artifactId>
</ejbModule>
</modules>
</configuration>
在部署期间,我可以更新架构并创建表、序列,但是当我尝试使用会话 bean 时,我总是会得到
javax.naming.NameNotFoundException: MySessionBean
这很有趣,因为我在控制台
JNDI bindings for session bean named 'MySessionBean'
上看到.ejb-module
ear
我已经尝试了几个小时来弄清楚我错过了什么,但我什么也没得到。可能是依赖范围吗?
解决方案
我忘了说什么是错的:
java:global/ejb-module/MySessionBean
java:app/ejb-module/MySessionBean
java:module/MySessionBean
原来我是java:module/MySessionBean
用来获取 Session Bean 的,所以异常类似于“..找不到 ear/module/MySessionBean”,所以我改成了java:app/ejb-module/MySessionBean
现在它可以工作了!
推荐阅读
- jasper-reports - 有人可以帮我处理 Jasper 报告吗
- javascript - Puppeteer 承诺一个事件,这是正确的事件控制流程吗?
- javascript - 没有插件的打折 Woocommerce 产品的倒数计时器
- node.js - 使用 mongoose 从 MongoDB Atlas 中获取样本数据
- c++ - PyTorch C++ 将数据转换为张量失败
- nginx - 负载均衡的服务器架构
- c++ - 如何遍历 cpp 中函数返回的 char 指针数组
- android - 如何通过 Google Play 商店获取带有应用签名密钥的 apk?
- c# - 我如何获得过去 4 周的周数 C#
- ios - SwiftUI:EditButton 在嵌入 HStack 部分标题时不会触发 onDelete