我在eclipse上开发一个Apache Mavendynamicweb项目。 它使用静态文件(html,css,js)和一个Java servlet。 当我将项目部署到Google应用程序引擎时,Java servlet不处理http请求。 该项目在当地完美运行。 servlet使用@WebServlet,但是将url映射添加到xml也不起作用。 我部署使用mvn appengine:更新。 为了排除故障,我决定从谷歌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工作的本地开发环境。