Sean, I just noticed something else:
On 3/7/2016 2:11 PM, Sean Dawson wrote: > On Sun, Mar 6, 2016 at 12:48 PM, Sean Dawson <seandawson2...@gmail.com> > wrote: > >> >> Tomcat 8_32 >> Windows 7 >> Java 8_51 >> RestEasy 3.0.11.Final >> GWT 2.7.0 (Jetty jetty-9.3.5.v20151012) >> >> Servlet code makes a RestEasy call to another servlet (same container) - >> second servlet sets the 'Warning' HTTP header on response. Would like to >> access that in first servlet but when running in Tomcat, that header is not >> included. >> >> Code to get header in first servlet: >> >> Object headers = ((ClientResponseFailure) >> e).getResponse().getResponseHeaders().get("Warning"); >> >> Also tried: getHeaders(), getStringHeaders(), and getHeaderString(). >> >> When running GWT in superdev mode in IntelliJ (15.0.4) using Jetty, the >> above returns a List with one item that contains the warning string. When >> remote debugging Tomcat, that call returns null. >> >> Added this to web app xml, and also tried Tomcat conf/web.xml... >> >> <filter> >> <filter-name>CorsFilter</filter-name> >> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> >> <init-param> >> <param-name>cors.exposed.headers</param-name> >> <param-value>Warning</param-value> >> </init-param> >> </filter> >> <filter-mapping> >> <filter-name>CorsFilter</filter-name> >> <url-pattern>/*</url-pattern> >> </filter-mapping> >> >> Also tried cors.allowed.headers. >> >> Any pointers? >> >> > > Alright, lets try this again. Simple reproducible testcase... > > - download latest Tomcat 8 for Windows 64-bit zip > http://mirrors.ocf.berkeley.edu/apache/tomcat/tomcat-8/v8.0.32/bin/apache-tomcat-8.0.32-windows-x64.zip > - extract somewhere > - delete everything in webapps folder > - build project below, put in webapps folder > - go to: http://localhost:8080/one > - check response headers... no Warning header > > ** pom.xml ** > > <project xmlns="http://maven.apache.org/POM/4.0.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 > http://maven.apache.org/maven-v4_0_0.xsd"> > <modelVersion>4.0.0</modelVersion> > > <groupId>test</groupId> > <artifactId>tcTest</artifactId> > <packaging>war</packaging> > <version>1.0-SNAPSHOT</version> > > <name>tcTest Maven Webapp</name> > <url>http://maven.apache.org</url> > > <dependencies> > <dependency> > <groupId>org.glassfish</groupId> > <artifactId>javax.servlet</artifactId> > <version>3.1.1</version> > </dependency> > <dependency> > <groupId>org.jboss.resteasy</groupId> > <artifactId>resteasy-client</artifactId> > <version>3.0.11.Final</version> > </dependency> > </dependencies> > > <build> > <finalName>ROOT</finalName> > </build> > </project> > > > ** web.xml ** > > > <!DOCTYPE web-app PUBLIC > "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" > "http://java.sun.com/dtd/web-app_2_3.dtd" > > > <web-app> > <display-name>Archetype Created Web Application</display-name> > > <servlet> > <servlet-name>One</servlet-name> > <servlet-class>pkg.ServletOne</servlet-class> > </servlet> > > <servlet-mapping> > <servlet-name>One</servlet-name> > <url-pattern>/one/*</url-pattern> > </servlet-mapping> > > <servlet> > <servlet-name>Two</servlet-name> > <servlet-class>pkg.ServletTwo</servlet-class> > </servlet> > > <servlet-mapping> > <servlet-name>Two</servlet-name> > <url-pattern>/two/*</url-pattern> > </servlet-mapping> > </web-app> > > > ** index.html ** > > > <html> > <body> > <h2>Hello World!</h2> > </body> > </html> > > > ** Caller interface ** > > > package pkg; > > import javax.ws.rs.GET; > import javax.ws.rs.Path; > > public interface Caller > { > @GET > @Path("two") > String makeCall(); > } > > > > ** Servlet one ** > > > package pkg; > > import java.io.IOException; > > import javax.servlet.ServletException; > import javax.servlet.http.HttpServlet; > import javax.servlet.http.HttpServletRequest; > import javax.servlet.http.HttpServletResponse; > import javax.ws.rs.core.MediaType; > > import org.jboss.resteasy.client.ProxyBuilder; > > public class ServletOne extends HttpServlet > { > Caller caller; > > @Override > public void init() throws ServletException > { > caller = ProxyBuilder.build(Caller.class, > "http://localhost:8080").now(); > } > > @Override > protected void doGet(HttpServletRequest request, > HttpServletResponse response) throws ServletException, IOException > { > String result = caller.makeCall(); > response.getWriter().println(result); > } > } > > > ** Servlet two ** > > > package pkg; > > import java.io.IOException; > > import javax.servlet.ServletException; > import javax.servlet.http.HttpServlet; > import javax.servlet.http.HttpServletRequest; > import javax.servlet.http.HttpServletResponse; > > public class ServletTwo extends HttpServlet > { > @Override > protected void doGet(HttpServletRequest request, > HttpServletResponse response) throws ServletException, IOException > { > addHeader(response); > response.getWriter().println("Ok"); > } > > void addHeader(HttpServletResponse response) > { > response.setHeader("Warning", "This is a warning"); // also > tried addHeader() > } > } > <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > Should probably be: <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> (sorry for the word wrapping). I normally don't use web.xml in my 3.1 applications. I end up using annotations instead. . . . just my two cents /mde/
signature.asc
Description: OpenPGP digital signature