我已经为weblogic服务器提供了一项服务,根据安装方式,我需要以两种不同的方式运行该服务。我的计划是在第一种情况下正常部署,在需要两个类的类中将 String 变量设置为 @Resource 和 ejb-jar描述符不同的行为(我使用限定符选择),并且如果我想让第二个行为在安装过程中使用计划应用更改。
然后我决定将父类抽象化,因为我需要它的两个实现,并且需要将该变量保留在那里,以便仍然能够选择行为。但是,当我部署服务时,安装程序会失败,提示无法设置变量。
到目前为止,我试图完全删除 ejb-jar 并将变量设置为默认值,但是如果我想要第二种行为,该计划将无法设置新值(或者我不知道该怎么做,对于所有这些都是完全新的)。
可能可行的另一种想法是在实现抽象类的类中设置变量,并为每个变量使用 ejb-jar 进行设置,但可能会增加太多。 / p>
那么,我能看到的任何线索,帮助或文档吗?问题真的是该类是抽象类吗?还是我在其他地方弄乱了?
我得到的确切错误是:
weblogic.j2ee.dd.xml.AnnotationProcessException:[EJB:015005]未在会话bean MyAbstractBean的部署描述符或注释中设置会话类型
我知道这可能意味着我需要在描述符的 session 标签中添加一个 type 标签,但似乎是相同的 ejb-jar 可以用于非抽象类,我真的不知道该类型标签应该是什么。
这是我的ejb-jar:
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>MyAbstractBean</ejb-name>
<ejb-class>mypackage.MyAbstractBean</ejb-class>
<env-entry>
<description> Here comes a descriptions</description>
<env-entry-name>MyAbstractBean</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>JMS</env-entry-value>
</env-entry>
</session>
</enterprise-beans>
</ejb-jar>
谢谢!