我有这样的问题(这一个),与应用程序引擎。
我刚刚开始尝试用eclipse插件将java应用程序部署到应用程序引擎,在localhost(使用tomcat服务器和应用程序引擎标准localhost)上测试了至少100次之后,它在本地运行良好。
但是当我将其部署为应用引擎标准时,我在尝试访问任何servlet时遇到了这个错误:
andler.doIllegalStateException:没有这样的servlet: jsp atandler.java:361ServletHorg.eclipse.jetty.security.映射(ServletHandler.do)atandler.java:448ServletHorg.eclipse.jetty.util.component.Start(ServletHycle.start)atycle.java:68AbstractLifeCorg.eclipse.jetty.util.component.(AbstractLifeCycle.start)atycle.java:131ContainerLifeCorg.eclipse.jetty.util.component.(ContainerLifeCycle.java:131)atorg.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:105)atorg.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)atorg.eclipse.jetty.security.SecurityHjava.lang.Start(SecurityHorg.eclipse.jetty.servlet.)atandler.updateConstraintSecurityHandler.java:1535Start(ConstraintSecurityHorg.eclipse.jetty.servlet.)atandler.doAbstractLifeCandler.java:157(AbstractLifeCorg.eclipse.jetty.util.component.)atycle.startContainerLifeCycle.java:68(ContainerLifeCorg.eclipse.jetty.util.component.)atycle.startContainerLifeC开始(ContainerLifeCycle. java: 105)at org. eclipse. jetty. server. handler. AbstractHandler. doStart(AbstractHandler. java: 61)at org. ecContextHandler. doStart(ContextHandler. java: 778)在org. eclipse. jetty. servlet。ServletContextHandler. doStart(ServletContextHandler. java: 262)在org. eclipse. jetty. webapp。WebAppContext. doStart(WebAppContext. java: 522)在org. eclipse. jetty. util。AbstractLifeCycle. start(AbstractLifeCycle. java: 68)在com. google. apphosting. runtime. jetty9。AppVersionHandlerMap. createHandler(AppVersionHandlerMap. java: 244)在com. google. apphosting. runtime. jetty9。AppVersionHandlerMap. getHandler(AppVersionHandlerMap. java: 182)在com. google. apphosting. runtime. jetty9。JettyServletEngineering Adap
我可以访问其他文件、图像、*. html。
我不知道这是否重要,我注意到应用程序引擎在我的网页上。xml文件是通过为我所有的*添加servlet和servelt映射(我认为映射到云存储)来修改的。jsp文件,但不在localhost中。
日志中的某处详细说明了“此请求导致您的应用程序启动新进程,从而导致您的应用程序代码首次加载。因此,与您应用程序的典型请求相比,此请求可能需要更长的时间并使用更多的CPU。”,我不知道这是否与我的试用帐户相关联。
我正在使用datanucleus(datanucleus-api-jdo-5.1.0-release)libs,我的网站上有一些过滤器、索引文件和错误页面jsp。xml也是。
Eclipse项目方面:
App引擎标准环境:JRE8
Servlet API:2.5
JAVA:1.8
JPA:1.0
我真的需要帮助,谢谢。
appengine-web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<threadsafe>true</threadsafe>
<sessions-enabled>true</sessions-enabled>
<runtime>java8</runtime>
</appengine-web-app>
web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>my_project</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- SERVLETS DEFs -->
<servlet>
<servlet-name>Welcome</servlet-name>
<servlet-class>my_root_package.servlets.controllers.Welcome</servlet-class>
</servlet>
<servlet>
<servlet-name>Statistic</servlet-name>
<servlet-class>my_root_package.servlets.controllers.Statistic</servlet-class>
</servlet>
<servlet>
<servlet-name>Genea_Tree</servlet-name>
<servlet-class>my_root_package.servlets.controllers.Genea_Tree</servlet-class>
</servlet>
<servlet>
<servlet-name>Genea_TreeEdit</servlet-name>
<servlet-class>my_root_package.servlets.controllers.Genea_TreeEdit</servlet-class>
</servlet>
<servlet>
<servlet-name>New_event</servlet-name>
<servlet-class>my_root_package.servlets.controllers.New_event</servlet-class>
</servlet>
<servlet>
<servlet-name>Inscription</servlet-name>
<servlet-class>my_root_package.servlets.controllers.Inscription</servlet-class>
</servlet>
<servlet>
<servlet-name>InscriptionStep1</servlet-name>
<servlet-class>my_root_package.servlets.controllers.InscriptionStep1</servlet-class>
</servlet>
<servlet>
<servlet-name>InscriptionStep2</servlet-name>
<servlet-class>my_root_package.servlets.controllers.InscriptionStep2</servlet-class>
</servlet>
<servlet>
<servlet-name>InscriptionConfirm</servlet-name>
<servlet-class>my_root_package.servlets.controllers.InscriptionConfirm</servlet-class>
</servlet>
<servlet>
<servlet-name>About</servlet-name>
<servlet-class>my_root_package.servlets.controllers.About</servlet-class>
</servlet>
<servlet>
<servlet-name>AdminDashboard</servlet-name>
<servlet-class>my_root_package.servlets.controllers.AdminDashboard</servlet-class>
</servlet>
<servlet>
<servlet-name>AdminAuthentification</servlet-name>
<servlet-class>my_root_package.servlets.secutity.controllers.AdminAuthentification</servlet-class>
</servlet>
<servlet>
<servlet-name>AdminPassReset</servlet-name>
<servlet-class>my_root_package.servlets.secutity.controllers.AdminPassReset</servlet-class>
</servlet>
<servlet>
<servlet-name>Search</servlet-name>
<servlet-class>my_root_package.servlets.controllers.Search</servlet-class>
</servlet>
<!-- SERVLETS MAPPING -->
<servlet-mapping>
<servlet-name>Welcome</servlet-name>
<url-pattern>/welcome</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Statistic</servlet-name>
<url-pattern>/statistic</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Genea_Tree</servlet-name>
<url-pattern>/genea_tree</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Genea_TreeEdit</servlet-name>
<url-pattern>/genea_tree/DetailEdit</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Genea_TreeEdit</servlet-name>
<url-pattern>/genea_tree/DetailEditMore</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>New_event</servlet-name>
<url-pattern>/new_event</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Inscription</servlet-name>
<url-pattern>/inscription</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>InscriptionStep1</servlet-name>
<url-pattern>/inscription/step1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>InscriptionStep2</servlet-name>
<url-pattern>/inscription/step2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>InscriptionConfirm</servlet-name>
<url-pattern>/inscription/Confirmation</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>About</servlet-name>
<url-pattern>/about</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdminAuthentification</servlet-name>
<url-pattern>/admin/Authentification</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdminPassReset</servlet-name>
<url-pattern>/admin/PassReset</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdminDashboard</servlet-name>
<url-pattern>/admin/dashboard</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdminDashboard</servlet-name>
<url-pattern>/admin</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdminDashboard</servlet-name>
<url-pattern>/admin/dashboard/insertionCommit</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdminDashboard</servlet-name>
<url-pattern>/admin/dashboard/updateCommit</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdminDashboard</servlet-name>
<url-pattern>/admin/dashboard/deleteCommit</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdminDashboard</servlet-name>
<url-pattern>/admin/InsertionCommitPost</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdminDashboard</servlet-name>
<url-pattern>/admin/updateCommitPost</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdminDashboard</servlet-name>
<url-pattern>/admin/deleteCommitPost</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Search</servlet-name>
<url-pattern>/AdvancedSearch</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Search</servlet-name>
<url-pattern>/search</url-pattern>
</servlet-mapping>
<!-- ERROR PAGES -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/WEB-INF/errorManagement.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/404ErrorManagement.jsp</location>
</error-page>
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
<include-prelude>/WEB-INF/taglibs.jsp</include-prelude>
</jsp-property-group>
</jsp-config>
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>my_root_package.filters.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!-- FILTERS DEFs -->
<filter>
<filter-name>multipartFilter</filter-name>
<filter-class>my_root_package.filters.MultipartFilter</filter-class>
<init-param>
<param-name>maxFileSize</param-name>
<param-value>360000</param-value>
</init-param>
</filter>
<!-- FILTERS MAPPING -->
<filter-mapping>
<filter-name>encodingfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>multipartFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
尽管上述问题在新的基于Java8的GAE中仍有待解决,但有一个适当的解决方案,它不需要在所有目标jsp文件上手动应用include标记。问题的真正原因是远程GAE无法将jsp
servlet规范映射到Google cloud runtime for Java上的实际servlet类。
简而言之,有两种解决方案(我推荐选项B):
选项A(快捷方式解决方案):
1...为您的servlet提供带注释的名称jsp
。
@WebServlet(
name = "jsp",
urlPatterns = {"/hello", "/"}
)
public class HelloAppEngine extends HttpServlet {
2.然后在你的网站上。xml
您可以自由应用jsp配置
规则。
...
<jsp-config>
<jsp-property-group>
<description>JSP configuration for the open app</description>
<url-pattern>/WEB-INF/*</url-pattern>
<include-prelude>/WEB-INF/header.jspf</include-prelude>
<include-coda>/WEB-INF/footer.jspf</include-coda>
</jsp-property-group>
</jsp-config>
...
这种方法的问题是(尽管它适用于远程GAE)在本地运行时会崩溃(由于本地jsp
servlet类冲突),因此您可能无法在本地检查开发。要避免选项Ajsp
hack和冲突,请使用选项B中的以下步骤。
备选方案B(适当的解决方案):
1...假设您正在使用maven构建,请将以下依赖项添加到您的pom.xml
。
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jsp</artifactId>
<version>9.4.8.v20171121</version>
</dependency>
2.然后在你的网站上。xml
添加以下配置。
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
3...而且还在web.xml
内你可以自由应用你的jsp-config
规则。
...
<jsp-config>
<jsp-property-group>
<description>JSP configuration for the open app</description>
<url-pattern>/WEB-INF/*</url-pattern>
<include-prelude>/WEB-INF/header.jspf</include-prelude>
<include-coda>/WEB-INF/footer.jspf</include-coda>
</jsp-property-group>
</jsp-config>
...
希望这能解决你的问题。编码愉快:)
对不起,我没有看到你的更新。我在你的web.xml中注意到你有一个jsp-config
部分引用了一个*. jsp
URL模式,但是你的servlet映射都没有jsp
后缀。
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
<include-prelude>/WEB-INF/taglibs.jsp</include-prelude>
</jsp-property-group>
</jsp-config>
GAE预编译JSP作为部署过程的一部分,所以我不确定这种类型的处理是否有效。您是否可以尝试在JSP中内联对taglibs.jsp
的引用?您应该能够执行以下操作:
<%@ include file="/WEB-INF/taglibs.jsp" %>
更新:我遇到了一位Google工程师的帖子,宣布
我一直试图在Google App Engine应用程序上部署Spring MVCJavaWeb应用程序,但一直没有成功。我正在使用App EngineJavaSDK从我的机器上部署它。当我执行部署时,我可以通过URL访问资源(例如图像、js等)。但是当我尝试访问主页时,我得到了一个带有500状态码的响应,服务器上的错误如下: 我试图查找“No-such-servlet:jsp”错误,但没有找到任何
我创建了一个JavaFX Maven应用程序,其中包含一些资源文件(在项目文件夹“src/main/resources”中)。该应用程序在NetBeans环境下运行良好。然而,当构建了自包含的JAR文件并将其复制到另一个文件夹时,应用程序的可视项(组合框、TextFields、VBoxes、...)没有正确显示(不同的颜色、错误的填充、...)。 CSS文件存在于JAR文件中,因为应用程序中(Ne
我有一个web应用程序,我一直在工作。我最近不得不重新映像我的计算机,我安装了与我的计算机以前运行的映像完全相同的映像,但是web应用程序不会通过Apache Netbeans 11.1部署在Tomcat9.0服务器上。 我安装的Apache Tomcat9.0、MySQL8.0和Apache Netbeans IDE11.1版本与上一个映像中使用的版本完全相同。我已经设置了与Web服务器和MyS
我正在同时试验Spring boot和openshift,不幸的是,我遇到了一个我无法找到的问题。 我用Spring启动的初始值设定项创建了一个应用程序。创建了几个Rest控制器(你好,世界喜欢) 这是我的应用程序(主) 我可以在本地启动应用程序(通过智能和冬虫)。我可以看到应用程序日志记录并访问所有endpoint,没有任何问题。 pom.xml是这样的: 因此,根据我的理解,WAR文件是根据O
错误如下: 完整的控制台日志如下: null 如果有任何其他论坛我可以问这个问题,请分享评论部分的链接。提前谢谢。
问题内容: 有没有像spring这样的android应用程序框架? 问题答案: 查看roboguice:http : //code.google.com/p/roboguice/ 顺便说一句,没有什么可以阻止您使用spring-因为这是纯java框架。但是它很重,可能出于您的目的而过度使用。 问题是-您想注入什么依赖关系?