【发布时间】:2019-06-08 03:26:45
【问题描述】:
我在 Embedded Jetty WebAppContext contextPath 中寻找通配符支持,但无法解决。 我的购物网络应用程序有以下代码:
String path = "/shopping";
WebAppContext wac = new WebAppContext(WEBAPP_PATH, path);
contexts.addHandler(wac);
我希望如果访问 http://ip:port/shopping/anything,它应该加载我上面的 webapp。但事实并非如此。我也尝试过使用 path = "/shopping/*" ,但它也不起作用。
如果可能的话,这里的任何人都可以帮助我,或者我在这里做错了什么。
编辑:
我正在 Jetty 上部署一个 webapp(扁平化内容),并且可以使用 http://host:port/shopping 成功访问它。
为了实现这一点,我创建了一个 WebAppContext(wac),其中 webappPath 指向资源文件夹,上下文路径为 /shopping。我将此 wac 添加到处理程序列表并将其附加到服务器(码头服务器)。
现在,我想要的是使用http://host:port/shopping/ 访问这个网络应用程序。无论我在 url 购物后提供什么,我的同一个 webapp 都应该被加载。
更新: 进一步关注这一点,我在下面尝试了但没有成功。
ServletContextHandler 上下文 = 新 ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/shopping");
ServletHolder staticHolder = new ServletHolder(new DefaultServlet());
staticHolder.setInitParameter("resourceBase", webAppPath);
staticHolder.setInitParameter("pathInfoOnly", "true");
context.addServlet(staticHolder, "/*");
context.setWelcomeFiles(new String[] { "index.html", "index.htm", "index.jsp" });
contexts.addHandler(context);
现在,如果我尝试 /shopping,它可以工作,但 /shopping/abc 不能。通配符匹配似乎不起作用。如果我使用 /home 而不是 /,则 /shopping/home 有效。任何人都可以在这里帮助我。
我的要求是为任何 /shopping/ url 提供 weabAppPath 服务。
【问题讨论】:
-
您只提供静态内容?没有servlet?没有过滤器?没有JSP?没有安全限制?没有 HttpSessions?
-
是静态内容和仅 REST,没有 servlet 和 JSP。安全约束作为附加到服务器的单独处理程序存在。
-
REST 意味着您拥有动态内容,这意味着您拥有一个 servlet。这也意味着 Jetty 不提供静态内容,您的 REST 库是(典型的 Jersey 库)。
-
不,Jetty 正在使用我的问题中提到的 org.eclipse.jetty.webapp.WebAppContext 提供静态上下文。 Jersey 使用 ServletContainer 提供 REST。
-
@JoakimErdfelt。我更新了这个问题。你现在能帮忙吗?
标签: java jetty embedded-jetty