当前位置: 首页 > 知识库问答 >
问题:

Weblogic 12.2忽略@EJB注释

公西宏毅
2023-03-14

我正在迁移一个应用程序从weblogic 10.3到weblogic 12.2。

我包括一个与其他项目共享的库。此jar包含一些带有@EJB注释的POJO,如下所示:

public abstract BaseSpecialService{
   @EJB DelegateService injectedService;
}

请注意,这只是一个POJO:它没有@无状态或@有状态注释。这个想法是,当我想使用这个服务时,我在另一个ejb-jar中用一个具体的@无状态Bean类扩展它。但是我只希望这个服务是我需要的,其他服务应该被视为POJOS。

在weblogic 10中,这很好,但是当移动到weblogic 12时,我无法部署应用程序,因为在我上面的示例中,容器尝试注入DelegateService,即使@EJB注释不在EJB中,而是在POJO中。我在部署时遇到以下错误:

[J2EE: 160200]从应用程序myapp-0.1.0-SNAPSHOT的模块null解析ejb-ref"com.example.BaseSpecialService/injectedService"时出错。ejb-ref没有ejb-link,也没有指定目标bean的JNDI名称。自动将ejb-ref链接到其目标bean的尝试失败,因为在应用程序中没有发现实现“com.example.委托服务”接口的EJB。将此ejb-ref链接或映射到其目标EJB,并确保ejb-ref中声明的接口正确。

我的解释是,在JavaEE7中,所有JAR都会被扫描以查找注释,而在JavaEE5中,只有在应用程序中标记为ejb模块的JAR。xml被扫描。我正在寻找一种方法来阻止应用服务器向POJO中注入依赖项,并将共享库jar视为普通jar,而不是ejb jar。但我找不到任何东西来做这件事。非常感谢您的帮助。

共有1个答案

谭伟
2023-03-14

WebLogic的CDI容器似乎扫描您的jar文件并尝试将POJO/EJB注入其中。我的建议是对给定的jar文件禁用CDI扫描并查看结果。您可以通过添加一个名为bean的文件来实现这一点。包含以下内容的xml,并将其放在jar文件的META-INF文件夹中:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
    version="1.1" bean-discovery-mode="none">
</beans>
 类似资料:
  • 我试图使用Jackson注释来重新命名序列化过程中产生的一些json标签。所有注释都编译得很好,当我运行时,除了所有Jackson注释之外,Jackson序列化工作完全被忽略。即使像@jsonignore或@jsonproperty这样的基本命令对json响应也没有影响。构建路径中的库有: 下面是我需要序列化的一个类的代码示例:

  • 有什么想法为什么@primary在这里没有被考虑在内吗?

  • 问题内容: 我的@Transactionnal注释似乎被忽略了。我对Spring容器的初始化没有任何错误。看来我的方法尚未被Spring TX框架代理。在执行服务的方法期间,JDBCTemplate会引发预期的RuntimeException。问题在于JDBC连接没有回滚,并且更改保持不变。stacktrace没有显示应该包装我的服务方法的代理的任何迹象。 编辑:添加了控制器的代码 编辑2:添加了

  • 问题内容: 我有一个实体,该实体与另一个用@Where注释的实体有关联,就像这样 最近不可避免的事情发生了,我需要加载不符合@Where子句的EntityB。我可以删除@Where批注,但是它使用很多,所以理想情况下,我不想这样做。除了手动加载EntityB列表之外,还有另一个查询,我还有哪些选择?我可以告诉Hibernate忽略@Where注释吗? 问题答案: 经过大量研究,这似乎是不可能的。我

  • 问题内容: 我正在将Web应用程序从Websphere 7(JEE5)迁移到JBoss EAP 6.2.0(JEE6)。目前,它在Glassfish 3和WAS中可以正常工作。 Web界面消耗/产生JSON-因此,我将使用带有Spring 3 MVC MappingJackson2HttpMessageConverter的Jackson2 来在简单的控制器类中处理(反序列化)。 在JBoss中,我

  • 我正在创建一个REST-API与泽西。为此,我正在学习PluralSight课程。 我已经安装了Jersey 2.2和Jersey media moxy依赖项(v2.26)。我将返回以下资源以将其解析为JSON: 如果我输出XML(使用@products(MediaType.APPLICATION_XML)),则“getNaam”的属性将正确地重命名为“name”,而不是“naam”。当我输出JS