Java
在 Google App Engine 部署中找不到 Java Servlet
我正在 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
與本地開發環境無關。