EJB调用上的STS 4.1异常

时间:2019-01-15 08:26:19

标签: java ejb-3.0 ejb-2.x jboss-tools jboss-4.2.x

我在Eclipse Indigo下有一个项目,其中JBoss 4.2.2的后端和前端(使用Flash Player)。

现在,我想使用STS 4.1作为后端更新我的项目,并使用Flash BuilderAdobe AIR IDE中移动前端。

后端使用EJB 2体系结构。

在后端,我创建了一个动态Web模块来与前端交互。它调用EJB。

STS 4.1下,我放了Jboss 4.2.3.GA(因为向导安装还没有安装4.2.2)。

当我调度前端事件以请求数据库查询时,后端异常。

我尝试调试,发现问题出在narrow类的方法PortableRemoteDocument上。

此方法异常如下:

  

java.lang.ClassCastException:null

我还发现了有关此错误的其他SO问题,其推测原因是EJB2和EJB3体系结构的混合使用。

但是Eclipse Indigo下的同一项目可以正常工作。

使用的JDK是7(对于两种环境)。

使用的库是相同的。

按照我的文件配置:

remoting-config.xml:

<destination id="EJB">
    <properties>
        <source>it.spi.jfw.callers.EJBCaller</source>
    </properties>
</destination>

EJBCaller.class调用是使用此方法调用不同EJB的入口点:

public Document performRequest(final Document req)
    throws ConsumerException
{
    try
    {
        final ServizioRemote remoteInterface = this.getBean(this.beanID);

        return remoteInterface.receiveMessage(req);
    }
    catch (final RemoteException re)
    {
        throw new ConsumerException(message#1", re);
    }
    catch (final IOException ioe)
    {
        throw new ConsumerException("message#2", ioe);
    }
}

这是GetEnti EJB的配置:

<session>
     <description><![CDATA[]]></description>
     <display-name>GetEnti</display-name>

     <ejb-name>GetEnti</ejb-name>

     <home>it.spi.jfw.ejbservices.ServizioRemoteHome</home>
     <remote>it.spi.jfw.ejbservices.ServizioRemote</remote>
     <local-home>it.spi.jfw.ejbservices.ServizioLocalHome</local-home>
     <local>it.spi.jfw.ejbservices.ServizioLocal</local>
     <ejb-class>it.spi.anagrafica.servizi.GetEnti</ejb-class>
     <session-type>Stateless</session-type>
     <transaction-type>Container</transaction-type>
</session> 

GetEnti.java类定义:

public class GetEnti extends BaseServizio {
    // code
}

BaseServizio.java类定义

public abstract class BaseServizio extends AbstractServizioSessionBean {
    // code
}

AbstractServizioSessionBean.java类定义

public abstract class AbstractServizioSessionBean extends AbstractServizio implements SessionBean
{
    // code
}

AbstractServizio.java类定义

public abstract class AbstractServizio implements Servizio
{
    // code
}

Servizio.java接口定义

public interface Servizio extends Remote {
    // code
}

编辑

我已将JBoss文件夹复制到旧服务器下,并且在部署的项目中工作正常。因此,我想这是JBoss允许进行的特殊定制的配置。

0 个答案:

没有答案