Java

在 Google App Engine 部署中找不到 Java Servlet

  • November 8, 2017

我正在 Eclipse 上開發一個 Apache Maven 動態 Web 項目。它使用靜態文件(html、css、js)和 Java servlet。當我將項目部署到Google應用引擎時,Java servlet 不處理 http 請求。該項目在本地完美執行。servlet 使用@WebServlet,但將 url 映射添加到 xml 也不起作用。我使用 mvn appengine:update 進行部署。為了排除故障,我決定從google github 儲存庫中獲取一個 java 類。我將 java 文件添加到我的 servlet 文件夾中,部署後我也收到 404 錯誤。

這是我的 WebServlet 註釋:

@WebServlet(name = "requests", description = "Requests: Trivial request",
   urlPatterns = "/requests")

這是我的 pom.xml 的大部分內容:

<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
 <plugin>
   <groupId>com.google.appengine</groupId>
   <artifactId>appengine-maven-plugin</artifactId>
   <version>1.9.54</version>
 </plugin>
 <plugin>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>3.5.1</version>
   <configuration>
     <source>1.8</source>
     <target>1.8</target>
   </configuration>
 </plugin>
 <plugin>
   <artifactId>maven-war-plugin</artifactId>
   <version>3.0.0</version>
   <configuration>
     <warSourceDirectory>www</warSourceDirectory>
   </configuration>
 </plugin>
</plugins>
</build>
<properties>
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>3.1.0</version>
   <type>jar</type>
   <scope>provided</scope>
</dependency>
</dependencies>

我哪裡錯了?

編輯:

<?xml version="1.0" encoding="UTF-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">

 <threadsafe>true</threadsafe>
 <runtime>java8</runtime>
 <warmup-requests-enabled>true</warmup-requests-enabled>
 <module>default</module>
 <automatic-scaling>
   <min-idle-instances>1</min-idle-instances>
   <max-idle-instances>automatic</max-idle-instances>
   <min-pending-latency>500ms</min-pending-latency>
   <max-pending-latency>automatic</max-pending-latency>
   <max-concurrent-requests>50</max-concurrent-requests>
 </automatic-scaling>
</appengine-web-app>

我能夠重現您的問題。您似乎缺少雲工具外掛。要解決它,請在您的<plugins>:

<plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>appengine-maven-plugin</artifactId>
  <version>1.3.1</version>
  <configuration>
     <deploy.promote>true</deploy.promote>
     <deploy.stopPreviousVersion>true</deploy.stopPreviousVersion>          
  </configuration>
</plugin>

如果上述方法不能緩解您的問題,請發布完整的錯誤日誌。謝謝

在我發布這篇文章時,Servlet 3.1 註釋似乎在本地開發伺服器中不起作用。

實際部署到 GAE 時,我得到了相同的程式碼,但@WebServlet與本地開發環境無關。

引用自:https://serverfault.com/questions/858750