Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在数据库连接期间未发现GWT文件问题_Database_Gwt_Servlets_Connection_Web.xml - Fatal编程技术网

Database 在数据库连接期间未发现GWT文件问题

Database 在数据库连接期间未发现GWT文件问题,database,gwt,servlets,connection,web.xml,Database,Gwt,Servlets,Connection,Web.xml,我正在尝试创建一个GWT应用程序,并且正在使用本地postgreSQL数据库。 我正在EclipseJuno上使用GWT2.4。 我以这种方式实现了服务器端实现(TaskServiceImpl): } 我现在尝试以这种方式运行getAllTask() public void onModuleLoad() { DatabaseConnection.taskService.getAllTasks(new AsyncCallback<List<Task>>() {

我正在尝试创建一个GWT应用程序,并且正在使用本地postgreSQL数据库。 我正在EclipseJuno上使用GWT2.4。 我以这种方式实现了服务器端实现(TaskServiceImpl):

}

我现在尝试以这种方式运行getAllTask()

public void onModuleLoad() {
    DatabaseConnection.taskService.getAllTasks(new AsyncCallback<List<Task>>() {

        @Override
        public void onSuccess(List<Task> result) {
            System.out.println("Success!");
        }

        @Override
        public void onFailure(Throwable caught) {
            System.out.println("Fail!");
        }
    });
}
模块加载()上的公共void{
DatabaseConnection.taskService.getAllTasks(新的AsyncCallback(){
@凌驾
成功时公开作废(列表结果){
System.out.println(“成功!”);
}
@凌驾
失败时的公共无效(可丢弃){
System.out.println(“失败!”);
}
});
}
总是返回“fail!”并给出以下错误:

com.google.appengine.tools.development.LocalResourceFileServlet doGet 警告:找不到:/fantapgl/task的文件

这是我的web.xml

<servlet>
    <servlet-name>taskServiceImpl</servlet-name>
    <servlet-class>fieldProject.server.service.TaskServiceImpl</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>taskServiceImpl</servlet-name>
    <url-pattern>/fantaPGL/task</url-pattern>
  </servlet-mapping>

taskServiceImpl
fieldProject.server.service.TaskServiceImpl
taskServiceImpl
/fantaPGL/任务
要打开与数据库的连接,我在persistence.xml中有以下代码:

<properties> 
  <property name="openjpa.jdbc.DBDictionary" value="postgres" /> 
  <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema()"/> 
  <property name="openjpa.ConnectionDriverName" value="org.postgresql.Driver"/> 
  <property name="openjpa.ConnectionURL" value="jdbc:postgresql://localhost:5432/db" />
  <property name="openjpa.ConnectionUserName" value="postgres" /> 
  <property name="openjpa.ConnectionPassword" value="password" />
</properties>


我不明白我错在哪里。有人能帮我吗

执行查询之前:

1) 使用jdbc驱动程序

try {
       Class.forName("org.postgresql.Driver");
     } catch (ClassNotFoundException e) {

        System.out.println("Your PostgreSQL JDBC Driver is missing! "
                + "Include in your library path!");
     e.printStackTrace();
    return "error";

     }
2) 连接到数据库

Connection connection = null;
connection = 
    DriverManager.getConnection( "jdbc:postgresql://127.0.0.1:5432/"YourDB", 
                                 "admin", 
                                 "pass" );
3) 然后执行查询


如果(connection!=null){//Your query}

我不确定是什么问题。但错误消息似乎表明您启用了google appengine。这是没有意义的,因为只有当你想在Google appengine上部署时,你才需要它,而且你显然是在为其他东西开发,因为你不能在Google appengine上运行PostgreSql


此外,确保通过将close放在finally语句中来关闭数据库连接,并且更喜欢返回特定的数据类型;也就是说,ArrayList而不是List。否则编译器将为List的所有子类生成代码,因为在编译时编译器不知道将使用哪个子类

您需要在serviceImpl类的开头添加@RemoteServiceRelativePath注释

请参阅
或者,如果您已安装google eclipse插件,请使用示例代码创建一个新项目,您也可以参考示例代码。

您的代码中没有包含该示例代码,但是否有@RemoteServiceRelativePath注释?您没有打开DB连接并进行连接?对于连接,我在persistence.xml中使用了上面的代码,抱歉,Woojah你对@RemoteServiceRelativePath注释的意思是什么?那么你的意思是我必须停用G应用程序引擎?它是默认激活的,我没有给予它重要性。您建议的从列表到ArrayList的更改是必需的,或者只是实现代码的更好方法?是的,如果您不为appengine开发appengine,则需要停用appengine(如果已启用),因为它会执行与G appengine限制相关的额外检查。使用ArrayList是不必要的,但非常推荐使用,因为将添加到生成代码中的List的所有子类都会产生开销(这意味着脚本的最终用户会有更大的下载量)。因此,我停用了GAE,重新创建了该项目,现在我遇到了这个问题:
在8888端口上启动Jetty[警告]异常java.lang.ClassNotFoundException:com.google.api.server.spi.SystemServiceServlet
显然还有许多其他行,在java.lang.ClassLoader.findClass(ClassLoader.java:358)中以
开头
启用GAE时,google插件确实生成了很多东西。在web.xml(请参阅)中的其他配置项中,您只需删除那些不相关的依赖项即可。非常感谢您的支持,GAE是主要问题。OpenJPA不适用于GAE,基本上,如果GAE被激活,我们必须使用datanucleosI,我忘了发布如何建立连接。。。我尝试了您的建议,但连接类型是“com.google.cloud.sql.jdbc.Connection”?因为现在我有一个“com.google.cloud”无法解决的错误。那是要添加的额外库吗?还是G应用程序引擎的云?因为使用PostgreSQL,我不认为google.cloud会起作用
try {
       Class.forName("org.postgresql.Driver");
     } catch (ClassNotFoundException e) {

        System.out.println("Your PostgreSQL JDBC Driver is missing! "
                + "Include in your library path!");
     e.printStackTrace();
    return "error";

     }
Connection connection = null;
connection = 
    DriverManager.getConnection( "jdbc:postgresql://127.0.0.1:5432/"YourDB", 
                                 "admin", 
                                 "pass" );