我通过'gradle appRun'启动我的servlet,码头响应contextPath ='/var/www'而不是servlet直接或附加到/var/www。
这是一个由两部分组成的问题,如果我可以在 gretty 下配置码头日志记录,也许我会看到 404 的答案。这是代码、配置和结果。请注意,我使用 HTTP: 表示“http[s]://”,因为堆栈溢出限制了我:
------------- Servlet 摘录
package com.priot.servlet;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
public class GetNext extends HttpServlet {
private static final Logger log = LogManager.getLogger();
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String remoteHost = req.getRemoteHost();
log.info("GetNext GET " + remoteHost);
res.setContentType( "text" );
PrintWriter out = res.getWriter();
out.println("Hello World from GetNext");
out.close();
}
}
--------------- web.xml
<web-app version="2.5" (can't post links) ... /xml/ns/javaee/webapp_2_5.xsd">
<servlet>
<servlet-name>getnext</servlet-name>
<servlet-class>com.priot.servlet.GetNext</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getnext</servlet-name>
<url-pattern>/getnext</url-pattern>
</servlet-mapping>
</web-app>
---------------- build.gradle
apply plugin: 'java'
apply plugin: 'war'
apply from: 'HTTPS:raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'
dependencies {
compile "javax.servlet:servlet-api:2.5"
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.3'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.3'
}
repositories {
mavenCentral()
jcenter()
}
war {
webXml = file('src/web.xml') // copies to WEB-INF/web.xml
}
gretty {
port = 8080
contextPath = '/var/www'
servletContainer = 'jetty9'
}
- - - - - - - - 跑
::: 1号航站楼
priot proj> gradle appRun :prepareInplaceWebAppFolder 最新 :createInplaceWebAppFolder 最新 :compileJava 最新 :processResources 最新 :classes 最新 :prepareInplaceWebAppClasses 最新 :prepareInplaceWebApp UP -TO-DATE :appRun 13:10:18 INFO Jetty 9.2.10.v20150310 启动并监听端口 8080 13:10:18 INFO var/www 运行于:13:10:18 INFO HTTP:localhost:8080/var/ www 按任意键停止服务器。
构建 87% > :appRun
::: 终端 2 - /var/www 但没有 /getnext 或 /var/www/getnext
priot ~> curl HTTP:localhost:8080/var/www priot ~>
priot ~> curl HTTP:localhost:8080/getnext ... HTTP 错误:404 访问 /getnext 时出现问题。原因:未找到 Powered by Jetty
priot ~> curl HTTP:localhost:8080/var/www/getnext ... HTTP ERROR 404 访问 /var/www/getnext 时出现问题。原因:未找到< 由 Jetty 提供支持: