I am developing a webapp that I hope will integrate Guice,
VelocityViewServlet, and JASIG's CAS (Centralized Authentication
Service) client.

I have already determined that the VelocityViewServlet cannot be
controlled by Guice. VelocityViewServlet is a template resolver that
allows the template to access Java objects found in the various webapp
contexts(ServletContext, HttpRequestContext, ...), and Guice does not
pass the contexts correctly to VelocityViewServlet when a request is
forwarded to it. So the VelocityViewServlet is included in web.xml,
and here it is:



        <filter>
            <filter-name>guiceFilter</filter-name>
            <filter-class>com.google.inject.servlet.GuiceFilter</
filter-class>
        </filter>

        <filter-mapping>
            <filter-name>guiceFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

        <listener>
            <listener-
class>edu.berkeley.library.mapup.GuiceServletConfig</listener-class>
        </listener>


        <servlet>
            <servlet-name>Velocity Servlet</servlet-name>
            <servlet-
class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-
class>
            <load-on-startup>1</load-on-startup>
        </servlet>

        <servlet-mapping>
            <servlet-name>Velocity Servlet</servlet-name>
            <url-pattern>*.vm</url-pattern>
        </servlet-mapping>


Using this setup, everything worked fine. Servlets controlled by Guice
could forward to VelocityViewServlet and VelocityViewServlet could see
and use the objects in the contexts. Then I tried to add CAS.

CAS is instantiated as a series of filters, which are configured by
init-params. Here is my ServletModule



        
bind(org.jasig.cas.client.authentication.AuthenticationFilter.class).in(Singleton.class);
        Map<String, String> auth_params = new HashMap<String, String>();
        auth_params.put("casServerLoginUrl", "https://auth-test.berkeley.edu/
cas/login");
        auth_params.put("serverName", "linuxdev.lib.berkeley.edu:7654");

        filter("/in/
*").through(org.jasig.cas.client.authentication.AuthenticationFilter.class,
auth_params);


        
bind(org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter.class).in(Singleton.class);
        Map<String, String> valid_params = new HashMap<String, String>();
        valid_params.put("casServerUrlPrefix", "https://auth-
test.berkeley.edu/cas");
        valid_params.put("serverName", "linuxdev.lib.berkeley.edu:7654");

        filter("/in/
*").through(org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter.class,
valid_params);

        
bind(org.jasig.cas.client.util.HttpServletRequestWrapperFilter.class).in(Singleton.class);

        filter("/in/
*").through(org.jasig.cas.client.util.HttpServletRequestWrapperFilter.class);

        
bind(org.jasig.cas.client.util.AssertionThreadLocalFilter.class).in(Singleton.class);
        filter("/in/
*").through(org.jasig.cas.client.util.AssertionThreadLocalFilter.class);

        serve("/in/gisuserform").with(GisRegisterServlet.class);
        serve("/in/
contributorDashboard").with(ContributorDashboardServlet.class);


When I put these filters in, output from the VelocityViewServlet,
which should be a text/html file, consists of a couple of control
characters only.

We have integrated CAS into a number of webapps without Guice. There
is something going on in the interaction between Guice and these
filters and VelocityViewServlet, but I can't see even how to debug it.

Anyone have any ideas?

Garey Mills

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en.

Reply via email to