2013-02-25 74 views
0

我有周期web服務最初的tomcat服務器。 現在我想將Web服務移植到GAE。 我移植成功了。 實現,但顯示此錯誤消息。 這會造成錯誤的可能性嗎?tomcat移植到谷歌App Engine

我的代碼:

public class LOAD extends HttpServlet{ 
     static String JBx; 
     static String JBy; 
     static String JBSx; 
     static String JBSy; 
     static String gps; 
     String a; 
     int i; 
      private Connection con = null; //Database objects 
      private Statement stat = null; 
      private ResultSet rs = null; 
      private PreparedStatement pst = null; 
     private String dropdbSQL = "DROP TABLE User "; 

     private String createdbSQL = "CREATE TABLE User (" + 
     " id  INTEGER " + 
     " , name VARCHAR(20) " + 
     " , passwd VARCHAR(20))"; 

     private String insertdbSQL = "insert into User(id,gps,recopy) " + 
       "select ifNULL(max(id),0)+1,?,? FROM User"; 

     private String selectSQL = "select * from User "; 
     public static void main(String[] args) 
     { 


     } 
      public void SelectTable() 
      { 
      try 
      { 
       stat = con.createStatement(); 
       rs = stat.executeQuery(selectSQL); 
       while(rs.next()) 
       { 
       JBSx =rs.getString("gps"); 
       JBSx="<div id=dd>"+JBSx+"</div>"; 
       if(JBx!=null){ 
        JBx=JBx+JBSx; 

       }else 
       { 
        JBx=JBSx; 

       } 
        JBSy =rs.getString("recopy"); 
        JBSy="<div id=ff>"+JBSy+"</div>"; 
        if(JBy!=null){ 
          JBy=JBy+JBSy; 

        } 
        else 
        { 
         JBy=JBSy; 

        } 
       } 
      } 
      catch(SQLException e) 
      { 
       System.out.println("DropDB Exception :" + e.toString()); 
      } 
//   finally 
//   { 
//   Close(); 
//   } 
      } 

      private void Close() 
      { 
      try 
      { 
       if(rs!=null) 
       { 
       rs.close(); 
       rs = null; 
       } 
       if(stat!=null) 
       { 
       stat.close(); 
       stat = null; 
       } 
       if(pst!=null) 
       { 
       pst.close(); 
       pst = null; 
       } 
      } 
      catch(SQLException e) 
      { 
       System.out.println("Close Exception :" + e.toString()); 
      } 
      } 
     public LOAD() 
     { 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      con = DriverManager.getConnection( 
        "jdbc:mysql://hl2dm.synology.me:3306/teama", 
        "abc",""); 

     } 
     catch(ClassNotFoundException e) 
     { 
      System.out.println("DriverClassNotFound :"+e.toString()); 
     } 
     catch(SQLException x) { 
      System.out.println("Exception :"+x.toString()); 
     } 

     } 
    public void doGet(HttpServletRequest rq, HttpServletResponse rp) 
        throws ServletException, IOException{ 
    JBx=null; 
    JBy=null; 
    JBSx=null; 
    JBSy=null; 
     rq.setCharacterEncoding("UTF-8"); 
//  String gps = rq.getParameter("gps"); 

     LOAD test = new LOAD(); 
     test.SelectTable(); 
     HttpSession session = rq.getSession(); 
//session.invalidate(); 
//  session.removeAttribute("reportx"); 
     session.setMaxInactiveInterval(3600);  
     session.setAttribute("reportx",JBx); 
     session.setAttribute("reporty",JBy); 
     rp.sendRedirect(rp.encodeRedirectURL("LOADPOST")); 
    } 
    public void doPost(HttpServletRequest rq, HttpServletResponse rp) 
        throws ServletException, IOException{ 
     doGet(rq, rp); 
    } 
} 

錯誤消息: HTTP錯誤500

Problem accessing /LOAD. Reason: 

    INTERNAL_SERVER_ERROR 
Caused by: 

java.lang.NullPointerException 
    at a.b.c.LOAD.SelectTable(LOAD.java:52) 
    at a.b.c.LOAD.doGet(LOAD.java:149) 
    at a.b.c.LOAD.doPost(LOAD.java:160) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:123) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:61) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:409) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
Powered by Jetty:// 

回答

2

要回答你的問題,是的,它會造成一定的破壞。

在AppEngine上沒有連接到MySql實例。您需要改用Google Cloud SQL。

它是這樣的:

DriverManager.registerDriver(new AppEngineDriver()); 
     con = DriverManager.getConnection("jdbc:google:rdbms://instance_name/guestbook"); 

請參見:this AppEngine guide了一套完整的步驟。請參閱https://developers.google.com/appengine/docs/java/cloud-sql/developers-guide#using_the_java_development_server