我已经开始使用嵌入式Jetty Server来启动第三方WAR。 所以我使用WebAppContext:
Server server = new Server(port);
WebAppContext ctx = new WebAppContext();
ctx.setContextPath("/samplePath");
ctx.setWar(<PATH_TO_WAR>);
server.setHandler(ctx);
server.start();
server.join();
这段代码有效(我在这里为了简洁起见省略了异常处理),但是现在我想为战争添加一些功能,我想完整保留(我的意思是,不要提取变化并再次压缩)。 我的功能应包括与某些自定义SSO解决方案的集成,该解决方案应添加以下内容:
我无法更改此SSO解决方案,因为它不是由我们的团队开发的,我们宁愿将其视为第三方。
所以我认为将所有这些添加到带有网络片段的模块将是最好的方法。
我的问题是:让Jetty的网络环境能够识别的最佳方法是什么?&#39;这个网络片段?一个工作的代码片段会很棒:)
当然,如果有一个比网络片段更好的选择,我会很高兴知道
我目前使用的Jetty版本是(来自我的pom.xml):9.2.10.v20150310
提前多多感谢!
答案 0 :(得分:0)
以下是指定网络应用和过滤器的方式
import java.io.IOException;
import java.util.EnumSet;
import javax.servlet.DispatcherType;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.servlet.ServletHandler;
import org.eclipse.jetty.webapp.WebAppContext;
public class MultipleHandler {
/**
* @param args
*/
public static void main(String[] args) {
Server server = new Server();
ServerConnector connectorA = new ServerConnector(server);
connectorA.setPort(55);
connectorA.setName("connA"); // connector name A
server.addConnector(connectorA);
HandlerCollection contexts = new HandlerCollection();
server.setHandler(contexts);
// A WebApp
WebAppContext appA = new WebAppContext();
appA.setContextPath("/samplePath");
appA.setWar("<warFilePath>");
appA.setVirtualHosts(new String[] { "@connA" }); // connector name A
contexts.addHandler(appA);
//Filter handler
ServletHandler handler = new ServletHandler();
handler.addFilterWithMapping(DoWork.class, "/filter",
EnumSet.of(DispatcherType.REQUEST));
contexts.addHandler(handler);
try {
server.start();
server.join();
} catch (Throwable t) {
t.printStackTrace(System.err);
}
}
public static class DoWork implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
System.out.print("Request filtered");
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
}