Java 服务器遇到错误,无法完成您的请求

Java 服务器遇到错误,无法完成您的请求,java,google-app-engine,Java,Google App Engine,我正在尝试在应用程序引擎Google上部署一个小应用程序。该应用程序在本地主机上运行良好,部署也很好,但我在生产环境中收到一条错误消息服务器遇到错误,无法完成您的请求。 错误 W 2014-04-05 10:12:02.177异常java.lang.IllegalArgumentException位于com.google.appengine.runtime.Request.process-f5cd6230c17e8858(Request.java)位于java.lang.ClassLoade E

我正在尝试在应用程序引擎Google上部署一个小应用程序。该应用程序在本地主机上运行良好,部署也很好,但我在生产环境中收到一条错误消息服务器遇到错误,无法完成您的请求。

错误

W 2014-04-05 10:12:02.177异常java.lang.IllegalArgumentException位于com.google.appengine.runtime.Request.process-f5cd6230c17e8858(Request.java)位于java.lang.ClassLoade

E 2014-04-05 10:12:02.177 javax.servlet.servlet上下文日志:org.mortbay.jetty.servlet.Holder.doStart(Holder.java:79)上的不可用javax.servlet.UnavailableException

W 2014-04-05 10:12:02.178无法启动context com.google.apphosting.utils.jetty。RuntimeAppEngineWebAppContext@ec911f{/,/base/data/home/apps/s~pattheboldandjujuju/1.37489685

C 2014-04-05 10:12:02.180 servlet javax.servlet.UnavailableException未捕获异常:初始化失败

我的代码非常简单:

web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
    <servlet>
        <servlet-name>Guestbook</servlet-name> 
        <servlet-class>guestbook.GuestbookServlet</servlet-class>
    </servlet> 
    <servlet-mapping>
        <servlet-name>Guestbook</servlet-name>
        <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list>
        <welcome-file>guestbook.jsp</welcome-file> 
    </welcome-file-list>
    <filter>
        <filter-name>ObjectifyFilter</filter-name>
        <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
    </filter> 
    <filter-mapping>            
        <filter-name>ObjectifyFilter</filter-name>
        <url-pattern>/*</url-pattern> 
    </filter-mapping>
</web-app>
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">

  <application>pattheboldandjuju</application>
  <version>1</version>

  <!--
    Allows App Engine to send multiple requests to one instance in parallel:
  -->
  <threadsafe>true</threadsafe>

  <!-- Configure java.util.logging -->
  <system-properties>
    <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
  </system-properties>

  <!--
    HTTP Sessions are disabled by default. To enable HTTP sessions specify:

      <sessions-enabled>true</sessions-enabled>

    It's possible to reduce request latency by configuring your application to
    asynchronously write HTTP session data to the datastore:

      <async-session-persistence enabled="true" />

    With this feature enabled, there is a very small chance your app will see
    stale session data. For details, see
    http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions
  -->

</appengine-web-app>

留言簿
guestbook.GuestbookServlet
留言簿
/ 
jsp
目标过滤器
com.googlecode.objectify.ObjectifyFilter
目标过滤器
/* 
guestbook.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.util.List" %>
<%@ page import="guestbook.Message" %>

<!DOCTYPE html>

<html> 
    <head>
        <title>Livre d'or</title>
        <meta charset="utf-8" /> 
    </head>
    <body>
        <h1>Vous avez aimé mon site ? Dites-le dans le Datastore !</h1> 
        <form action="/post" method="post">
            <p>
            <label>Votre nom : <input type="text" name="name" /></label>
            </p> 
            <p>
                <label>Votre message :<br />
                <textarea name="message" style="width: 200px; height: 100px;"></textarea></label>
            </p> 
            <p>
                <input type="submit" /> 
            </p>
            </form>
        <h1>Ils ont aimé :</h1> 
        <%
        List<Message> messages = (List<Message>) request.getAttribute("messages");
        for (Message message : messages) { 
        %>
        <p>
            <strong><%= message.getName() %></strong> a écrit :<br /> <%= message.getMessage() %>
        </p> 
        <%}%> 
    </body>
</html>

利弗雷多尔酒店
你是avez aimémon站点吗?数据存储!

Votre nom:

Votre消息:

艾美岛: aécrit:

GuestbookServlet.java

package guestbook;

import static com.googlecode.objectify.ObjectifyService.ofy;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.datastore.KeyFactory;
import com.googlecode.objectify.ObjectifyService;

@SuppressWarnings( "serial" )
public class GuestbookServlet extends HttpServlet {

    // Enregistrement de la classe persistable auprès d'Objectify
    static {
        ObjectifyService.register( Message.class );
    }

    public void doGet( HttpServletRequest req, HttpServletResponse resp ) {
        try {
            // Requête Objectify
            List<Message> messages = ofy().load().type( Message.class ).ancestor( KeyFactory.createKey( "LivreOr", "livreOr" ) ).order( "-date" ).limit( 5 ).list();
            req.setAttribute( "messages", messages );
            this.getServletContext().getRequestDispatcher( "/WEB-INF/guestbook.jsp" ).forward( req, resp );
        } catch ( ServletException e ) {
            e.printStackTrace();
        } catch ( IOException e ) {
            e.printStackTrace();
        }
    }

    public void doPost( HttpServletRequest req, HttpServletResponse resp ) {
        try {
            // Création de l'objet
            Message message = new Message( req.getParameter( "name" ), req.getParameter( "message" ) );

            // Enregistrement de l'objet dans le Datastore avec Objectify
            ofy().save().entity( message ).now();
            resp.sendRedirect( "/" );
        } catch ( IOException e ) {
            e.printStackTrace();
        }
    }
}
套餐留言簿;
导入静态com.googlecode.objectify.ObjectifyService.ofy;
导入java.io.IOException;
导入java.util.List;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入com.google.appengine.api.datastore.KeyFactory;
导入com.googlecode.objectify.ObjectifyService;
@抑制警告(“串行”)
公共类GuestbookServlet扩展了HttpServlet{
//永久性客体化类登记
静止的{
ObjectifyService.register(Message.class);
}
公共无效数据集(HttpServletRequest请求、HttpServletResponse响应){
试一试{
//要求客观化
List messages=ofy().load().type(Message.class).祖先(KeyFactory.createKey(“livrore”,“livrore”)).order(“-date”).limit(5).List();
请求setAttribute(“消息”,消息);
this.getServletContext().getRequestDispatcher(“/WEB-INF/guestbook.jsp”).forward(req,resp);
}捕获(ServletException e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
public void doPost(HttpServletRequest-req、HttpServletResponse-resp){
试一试{
//奥布杰特酒店
消息消息=新消息(req.getParameter(“名称”)、req.getParameter(“消息”));
//数据存储avec对象化的对象注册
ofy().save().entity(message).now();
分别以“/”号填列;
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
appengine web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
    <servlet>
        <servlet-name>Guestbook</servlet-name> 
        <servlet-class>guestbook.GuestbookServlet</servlet-class>
    </servlet> 
    <servlet-mapping>
        <servlet-name>Guestbook</servlet-name>
        <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list>
        <welcome-file>guestbook.jsp</welcome-file> 
    </welcome-file-list>
    <filter>
        <filter-name>ObjectifyFilter</filter-name>
        <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
    </filter> 
    <filter-mapping>            
        <filter-name>ObjectifyFilter</filter-name>
        <url-pattern>/*</url-pattern> 
    </filter-mapping>
</web-app>
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">

  <application>pattheboldandjuju</application>
  <version>1</version>

  <!--
    Allows App Engine to send multiple requests to one instance in parallel:
  -->
  <threadsafe>true</threadsafe>

  <!-- Configure java.util.logging -->
  <system-properties>
    <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
  </system-properties>

  <!--
    HTTP Sessions are disabled by default. To enable HTTP sessions specify:

      <sessions-enabled>true</sessions-enabled>

    It's possible to reduce request latency by configuring your application to
    asynchronously write HTTP session data to the datastore:

      <async-session-persistence enabled="true" />

    With this feature enabled, there is a very small chance your app will see
    stale session data. For details, see
    http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions
  -->

</appengine-web-app>

帕提博尔德朱朱
1.
符合事实的

有什么办法解决这个问题吗?谢谢
/WEB-INF
中的资源用于配置,不可公开查看,因此您不能将请求转发到
/WEB-INF/guestbook.jsp


尝试将
guestbook.jsp
移动到一个公共可访问的位置。

我不确定这是否是解决方案,因为如果我只输入:resp.setContentType(“text/plain”);resp.getWriter().println(“Hello,world”),我会遇到相同的错误;当然,我曾尝试按照您的建议在其他地方实现guestbook.jsp,但没有成功。