Java GWT异步调用总是失败
我的gwt项目有一些问题,我使用eclipselink和hsqldb作为数据库 这是我的密码: Project.java:Java GWT异步调用总是失败,java,gwt,callback,Java,Gwt,Callback,我的gwt项目有一些问题,我使用eclipselink和hsqldb作为数据库 这是我的密码: Project.java: package com.example.client; public class Project implements EntryPoint { private final EmployeeServiceAsync eService = (EmployeeServiceAsync) GWT.create(EmployeeService.class); [...] som
package com.example.client;
public class Project implements EntryPoint {
private final EmployeeServiceAsync eService = (EmployeeServiceAsync) GWT.create(EmployeeService.class);
[...] some GWT code
@Override
public void onModuleLoad() {
eService.createemployee(new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
Window.alert("Fail!");
}
@Override
public void onSuccess(Void result) {
//nothing
}
});
那么我怎样才能正确地调用这个方法呢
EmployeeService.java
package com.example.client.service;
@RemoteServiceRelativePath("employeeService")
public interface EmployeeService extends RemoteService{
public void createemployee();
}
package com.example.client.service;
public interface EmployeeServiceAsync {
void createemployee(AsyncCallback<Void> callback);
}
EmployeeServiceAsync.java
package com.example.client.service;
@RemoteServiceRelativePath("employeeService")
public interface EmployeeService extends RemoteService{
public void createemployee();
}
package com.example.client.service;
public interface EmployeeServiceAsync {
void createemployee(AsyncCallback<Void> callback);
}
Employee类存储在com.example.shared.entity中;我认为persistence.xml和project.gwt.xml是可以的,但我不确定web.xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
<!-- Servlets -->
<servlet>
<servlet-name>employeeServiceImpl</servlet-name>
<servlet-class>
com.example.server.ServiceImpl.EmployeeServiceImpl
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>employeeServiceImpl</servlet-name>
</servlet-mapping>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>Project.html</welcome-file>
<url-pattern>/com.example.client.Project/employeeService</url-pattern>
</welcome-file-list>
</web-app>
雇员服务公司
com.example.server.serviceinpl.employeeserviceinpl
雇员服务公司
Project.html
/com.example.client.Project/employeeService
第一个应该是,如果我理解正确的话,派生自@RemoteServiceRelativePath(“employeeService”)
;
而
派生自存储在服务器端的类,该类扩展了RemoteServiceServlet<代码>应该与
相同,在这里,在
中,我不确定我写了什么
您建议如何正确运行此代码?提前谢谢你 为客户端服务异步存根生成代码时,它会获取
@RemoteServiceRelativePath
注释的值,并在其前面加上GWT.getModuleBaseURL()
(这在中进行了解释)
GWT.getModuleBaseURL()
是您的nocache.js
文件所在的“文件夹”。在标准设置中,这直接取决于模块的名称(project.gwt.xml
和放入的包)或模块中的重命名为
参数。根据错误消息,您的情况是http://…/project/
(您的nocache.js
位于project/project.nocache.js
)
您必须调整web.xml文件中的
以匹配该URL,因此在您的情况下,它应该是/project/employeeService
简而言之:使用
@RemoteServiceRelativePath
配置客户端代码将调用的URL,使用
配置服务“侦听”的URL;如果我将
设置为/project/employeeService
,我会在控制台中看到一个新错误:严重:javax.servlet.ServletContext log:Exception,在调度传入RPC调用com.google.gwt.user.server.RPC时发生异常void com.example.client.service.EmployeeService.createemployee()'引发了意外异常:javax.persistence.PersistenceException:在尝试以下发现的实现后,“ronfPU”没有可用的持久性提供程序:org.datanucleus.api.jpa.PersistenceProviderImpl
。你知道那是什么吗?Thanksah,“ronfPU”在persistence.xml中设置为
,每次一个错误。您修复了“找不到:/project/employeeService的文件”错误,对吗?现在,如果你有其他问题,请随意问另一个问题。