Java Websphere Liberty Base 17上的EJBConfiguration异常

Java Websphere Liberty Base 17上的EJBConfiguration异常,java,jakarta-ee,ejb,websphere-liberty,Java,Jakarta Ee,Ejb,Websphere Liberty,我不得不将一个软件项目从WebSphereApplicationServerV8(WAS8)迁移到WebSphereLiberty Base v17(WL17),并在EJB中遇到了问题。例如,有以下EJB: @Stateless @Local(MyUserServiceLocal.class) public class MyUserServiceBean implements MyUserServiceLocal { @EJB private OtherServiceLocal

我不得不将一个软件项目从WebSphereApplicationServerV8(WAS8)迁移到WebSphereLiberty Base v17(WL17),并在EJB中遇到了问题。例如,有以下EJB:

@Stateless
@Local(MyUserServiceLocal.class)
public class MyUserServiceBean implements MyUserServiceLocal {

    @EJB
    private OtherServiceLocal otherServiceLocal;

    @Resource
    private SessionContext context;

    public MyUserServiceBean() {
    }

    public String getUserEmail() {...}

    public String getUserDataId() throws ServiceException {...}
    ...
}
与相应的本地接口:

@Local
public interface MyUserServiceLocal {

    public String getUserEmail();

    public String getUserDataId() throws ServiceException;
    ...
}
还有很多EJB遵循类似的实现方案

该项目构建得很好,所有Eclipse项目中的所有方面都设置正确,maven创建了一个新的、可部署的EAR文件。但是,当我访问应用程序默认页面时,会抛出以下嵌套异常:
MyApplication的MyUserServiceBean类#MyUserServiceEjb.jar#MyUserServiceBean没有不接受参数的公共构造函数。

我目前无法想象为什么WL17会引发此异常。my WL的功能配置如下所示:

<featureManager>
    <feature>appSecurity-2.0</feature>
    <feature>cdi-1.2</feature>
    <feature>distributedMap-1.0</feature>
    <feature>ejbLite-3.2</feature>
    <feature>ejb-3.2</feature>
    <feature>jacc-1.5</feature>
    <feature>jaxrs-2.0</feature>
    <feature>jaxws-2.2</feature>
    <feature>jca-1.7</feature>
    <feature>jdbc-4.1</feature>
    <feature>jndi-1.0</feature>
    <feature>jpa-2.1</feature>
    <feature>jsf-2.2</feature>
    <feature>jsp-2.3</feature>
    <feature>ldapRegistry-3.0</feature>
    <feature>mdb-3.2</feature>
    <feature>servlet-3.1</feature>
    <feature>ssl-1.0</feature>
    <feature>webCache-1.0</feature>
    <feature>wmqJmsClient-2.0</feature>
</featureManager>

appSecurity-2.0
cdi-1.2
分布式地图-1.0
ejbLite-3.2
ejb-3.2
jacc-1.5
jaxrs-2.0
jaxws-2.2
jca-1.7
jdbc-4.1
jndi-1.0
jpa-2.1
jsf-2.2
jsp-2.3
ldapRegistry-3.0
mdb-3.2
servlet-3.1
ssl-1.0
webCache-1.0
wmqJmsClient-2.0

当我不加载mdb或ejb特性时,我也是这样。有没有办法解决这个问题?我在谷歌上搜索了很多,阅读了一半的互联网,但没有得到答案,也不知道如何解决这个问题。

我发现了EJB的问题。其中一个接口方法被声明为抛出
javax.xml.rpc.ServiceException
。我不明白为什么这会是一个问题,但是在删除接口中的
抛出
声明之后,实现类WL17能够正确初始化bean。

这可能会有帮助吗?谢谢你的评论。参考的SO问题提供了三种解决问题的思路。我都试过了,结果如下:(1)@PostConstruct——不起作用。(2) 注入成员而不是使用默认构造函数+EJB注释——不起作用。(3) Maven插件配置错误--不适合此问题。|很抱歉,我还是有同样的问题,而且只有这个豆子。有许多其他bean遵循完全相同的实现方案,但没有问题。很可能,javax.xml.rpc.ServiceException不在类路径上,因此当EJB容器使用反射来定位构造函数时,JDK返回一个错误,或者可能为null,表明它不存在。在类上使用反射时,JDK似乎会尝试完全初始化和解析该类,从而导致此类错误。理想情况下,JDK会抛出某种类型的ClassNotFoundException,WebSphere至少会将其记录在FFDC中,但我猜JDK只是返回null。