问题描述
我正在使用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无法解析为一种类型。”
1楼
您必须删除EJB模块,并将sessionbean和实体类放入gwt projet中。 所以现在您只有1个项目。 而且,您必须将EclipseLink(JPA 2.0)库添加到类路径中(因为有注释)。
2楼
我认为您可能在{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' />
因为我想服务器下有很多与代码无关的代码客户代码。