2012-07-20 156 views
1

我编码一个简单的Web应用程序GAE应该给我一个电子邮件从一种形式:谷歌应用程序引擎 - 错误503_Service不可用

我已编码的GAE代码:

的index.html:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>A form</title> 
</head> 
<body> 
<form action="/feedback" method="post"> 

    <!-- Simple text field --> 
<label for="name">Name </label> 
<input type="text" name="name"/> 
<br/> 

    <!-- Email --> 
<label for="email">Email </label> 
<input type="email" name="email"/> 
<br/> 


    <!-- Textarea --> 
<label for="description">Description </label> 
<textarea name="description" cols="50" rows="5">Type your comment here</textarea> 
<br/> 


<input type="submit" name="submit" value="Send Request" action="/feedback"/> 
</form> 
</body> 
</html> 

的web.xml

<servlet> 
    <servlet-name>FeedbackServlet</servlet-name> 
    <servlet-class>at.wunderapps.servlets.FeedbackServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>FeedbackServlet</servlet-name> 
    <url-pattern>/feedback</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

的servlet:

import java.io.IOException; 
import java.util.Properties; 

import javax.mail.Message; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

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

    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 
     String name = req.getParameter("name"); 
     String description = req.getParameter("description"); 
     String email = req.getParameter("email"); 
     Properties props = new Properties(); 
     Session session = Session.getDefaultInstance(props, null); 

     String msgBody = name + description + email + " :EMAIL"; 

     try { 
      Message msg = new MimeMessage(session); 
      msg.setFrom(new InternetAddress("[email protected]", 
        "Es FUNKTIONIERT!!!")); 
      msg.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]", "Your name")); 
      msg.setSubject("Bestellung"); 
      msg.setText(msgBody); 
      Transport.send(msg); 

     } catch (Exception e) { 
      resp.setContentType("text/plain"); 
      resp.getWriter().println("Something went wrong. Please try again."); 
      throw new RuntimeException(e); 
     } 

     resp.setContentType("text/plain"); 
     resp.getWriter().println(
       "Thanks you for your feedback. An Email has been send out."); 
    } 
} 

当我做本地主机我得到:

HTTP ERROR: 503 

Problem accessing /. Reason: 

    SERVICE_UNAVAILABLE 

和我得到的例外是:

抛出java.lang.ClassNotFoundException:at.wunderapps.servlets

CRITICAL:javax.servlet.ServletContext日志:不可用 javax.servlet.Unavai lableException:at.wunderapps.servlets

2012年7月20日13点13分46秒com.google.apphosting.utils.jetty.JettyLogger警告WARNUNG:失败FeedbackServlet:显示java.lang.NullPointerException 2012年7月20日13点13分46秒com.google.apphosting.utils.jetty.JettyLogger警告WARNUNG:上下文启动失败 c[email protected]495c998a {/,C:\ Users \ Desktop \ mailservice \ war} java.lang .NullPointerException

我想问题可能是inde.html找不到我的servlet。但为什么,导致web.xml似乎没事了?你能帮我么?

PS:我在Windows 7

回答

2
<servlet-class>at.wunderapps.servlets.FeedbackServlet</servlet-class> 

运行它如果这是你的servlet的完全限定名称,则FeedbackServlet.java文件的第一行应该是

package at.wunderapps.servlets; 

和FeedbackServlet.class文件应在

<yourWebAppRootFolder>/WEB-INF/classes/at/wunderapps/servlets/FeedbackServlet.class 

或者,如果你使用的是Eclipse为你我DE,那么只需将您的代码放入

<yourWebAppRootFolder>/src/at/wunderapps/servlets/FeedbackServlet.java