У меня проблемы с тем, чтобы TomEE перенаправил мой запрос в другое веб-приложение из того же файла ушей.
Я обновил context.xml с включенным crossContext:
<Context antiResourceLocking="false" privileged="true" crossContext="true">
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="172.17.0.1" />
-->
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
Веб-приложениея пересылаю простой сервлет:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
RequestDispatcher dispatcher;
dispatcher = getServletContext().getContext("/web2").getRequestDispatcher("/webapp2/hello");
dispatcher.forward(req, resp);
} catch (Exception e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw, true);
e.printStackTrace(pw);
resp.sendError(HttpServletResponse.SC_BAD_REQUEST, sw.toString());
}
}
Веб-приложение, на которое он должен быть перенаправлен, является ресурсом отдыха, который выглядит следующим образом:
package local.gerb;
import javax.ws.rs.*;
@Path("webapp2")
public class HelloResource {
@GET
@Path("hello")
@Produces("text/plain")
public String getMessage() {
return "Rest Never Sleeps";
}
}
Я проверил, чтоwebapps2 работает, скручивая конкретную конечную точку.
Однако, когда я скручиваю webapp1, который должен пересылать в webapp2, я получаю 404. Что странно, если я преобразую Res Resource в простой сервлет, переадресация работаетотлично.
Если вы хотите увидеть код, который я отправил на github: https://github.com/jstralko/tomee-fwd
У меня есть ReadMe, объясняющий, как создать и запустить это приложение.Он работает в док-контейнере, поэтому все является автономным и супер простым в сборке и запуске.