【问题标题】:GWT 2.2 + JPA problemGWT 2.2 + JPA 问题
【发布时间】:2011-03-29 16:49:06
【问题描述】:

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

首先我认为问题是注释,但后来我从 GWT 2.0 版本中读到,如果“该类使用 JPA javax.persistence.Entity 注释进行注释”,则应该可以工作。

那么可能是什么问题?

嗯,我想我只是把所有的东西都写在这里。 我有带有以下包的 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)

如果我添加&lt;source path='server' /&gt;,问题与这个新问题相同:“无法解析导入 javax.ejb。无法将 EJB 解析为类型。”

【问题讨论】:

  • 您确定您的实体源可用于 GWT 编译器吗?

标签: java gwt jpa


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    <source path='yourpath' />
    

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

     org.ecommunity
    

    可能有一个包

     org.ecommunity.client
    

    &lt;source path='client' /&gt; 已经包含了一些 GWT 内容 但是你的实体类在:org.ecommunity.server.entity 所以你必须为&lt;source path='server' /&gt; 输入另一个源。顺便说一句,将实体从服务器下移到 org.ecommunity.entity 并添加 &lt;source path='entity' /&gt; 可能会更好,因为我猜在服务器下有很多与客户端代码无关的代码。

    【讨论】:

    • 我认为这不是问题所在。我有这个:
    • 我已经扩展了我的答案以澄清一些观点希望它有所帮助。
    • 正如 Eelke 所说,我通常将公共客户端和服务器代码保存在另一个包中,我告诉 GWT 在哪里可以找到它
    • 我刷新了我的问题。我错过了什么吗?我应该对客户端中的实体做些什么吗?
    • 或者我是否还需要在 2.2 中编写 DTO?
    猜你喜欢
    • 2011-05-22
    • 1970-01-01
    • 2010-10-16
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 2017-06-15
    • 1970-01-01
    相关资源
    最近更新 更多