当前位置: 代码迷 >> java >> GWT 2.2 + JPA问题
  详细解决方案

GWT 2.2 + JPA问题

热度:104   发布时间:2023-08-02 10:59:09.0

我正在使用GWT 2.2,JPA,Java EE 6 Web,glassfish v3。 我的问题是,如果我在RPC调用中使用我的实体,则会收到以下错误:“没有可用于类型object.User的源代码;您是否忘记了继承必需的模块?”

首先,我要注意的问题是注释,但是如果“使用JPA javax.persistence.Entity注释对类进行注释”,我将从GWT 2.0版本开始工作。

那么可能是什么问题呢?

嗯,我想我只是在这里写下一切。 我有带有以下软件包的GWT项目:

org.ecommunity
org.ecommunity.client (和org.ecommunity.client.view)
org.ecommunity.server >这只是一个服务实现:

public class ECommunityServiceImpl extends RemoteServiceServlet implements ECommunityService  {
    @EJB
    ECommunitySB bean;

    @Override
    public User loginService(String username) {
        return bean.getUserByUsername(username);
    }
}

我的Main.gwt.xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
<module>
    <inherits name="com.google.gwt.user.User"/>
    <inherits name='com.google.gwt.user.theme.standard.Standard'/>
    <entry-point class="org.ecommunity.client.MainEntryPoint"/>
    <source path="client"/>
</module>

我有一个带有以下软件包的EJB模块: entity (在这里是我的User实体类)和一个sessionbean (与我的sessionbean)

如果我添加<source path='server' /> ,问题将与新版本相同:“无法解析导入javax.ejb。EJB无法解析为一种类型。”

您必须删除EJB模块,并将sessionbean和实体类放入gwt projet中。 所以现在您只有1个项目。 而且,您必须将EclipseLink(JPA 2.0)库添加到类路径中(因为有注释)。

我认为您可能在{project} .gwt.xml中缺少源路径

<source path='yourpath' />

我会在这里猜测,假设您的{project} .gwt.xml位于

 org.ecommunity

可能有一个包装

 org.ecommunity.client

现在已经有了一些GWT的东西,它是<source path='client' />所包含的,但是您的实体类位于: org.ecommunity.server.entity因此,您将不得不为<source path='server' />另一个源。 <source path='server' /> 顺便说一句,最好将实体从服务器下org.ecommunity.entity例如org.ecommunity.entity并添加<source path='entity' />因为我想服务器下有很多与代码无关的代码客户代码。

  相关解决方案