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/

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to