该问题出现在GWT2.6.1中,可能已在以后的版本中得到解决。
为了处理GWT2.6.1,在gwt-dev.jar中自定义JettyLauncher.java,通过Filter为8888端口origin的sourcemap请求检索并返回9999端口origin,并将该类添加到项目中。您可以将其放置在src中并使用它来处理它。
com.google.gwt.dev.shell.jetty.JettyLauncher.java(自定义。添加wac.addFilter())
protected JettyServletContainer createServletContainer(TreeLogger logger,
File appRootDir, Server server, WebAppContext wac, int localPort) {
wac.addFilter(SourcemapFilter.class, "/sourcemaps/GwtModule/gwtSourceMap.json", EnumSet.of(DispatcherType.INCLUDE,DispatcherType.REQUEST));
return new JettyServletContainer(logger, server, wac, localPort, appRootDir);
}
com.google.gwt.dev.shell.jetty.SourcemapFilter.java(自定义新类)
public class SourcemapFilter implements Filter {
@SuppressWarnings("unused")
@Override
public void init(FilterConfig arg0) throws ServletException {
// noop
}
@SuppressWarnings("unused")
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
String proxyURL =
"http://" + request.getServerName() + ":" + System.getProperty("gwt.codeserver.port") + request.getRequestURI();
System.out.println("[Sourcemap proxy filter] proxyURL: " + proxyURL);
URL url = new URL(proxyURL);
InputStream is = url.openStream();
int value;
while ((value = is.read()) != -1) {
response.getWriter().write(value);
}
is.close();
}
@Override
public void destroy() {
// noop
}
}