geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rex Wang <rwo...@gmail.com>
Subject Re: svn commit: r1060171 - /geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
Date Wed, 19 Jan 2011 07:29:31 GMT
Hi David,

I was planning first make the old functions work and then see if we can make
any improvements, because it blocks a lot of tck cases.
I am not very familiar with the codes in tomcatmodulebuilder, however I
would like to try the approach you pointed out, so I have reverted the
changes.

thanks and regards,

2011/1/18 David Jencks <david_jencks@yahoo.com>

> Hi,
>
> Could you explain how you are planning to make this work?  It's not obvious
> to me.  From this it looks like you are reintroducing a gbean for each pojo
> web service which is a very different approach than what is used for the
> actual servlets in the web app.
>
> If I remember correctly there was some very peculiar code related to these
> servlets for pojo web services since the servlet instance needed to be
> configured with  the actual objects that deal with the web service
> processing,  and formerly there was no plausible way to do this.  With the
> servlet 3 capabilities I was hoping that we can directly construct and
> configure the servlet object and add it to the servlet context.
>
> thanks
> david jencks
>
> On Jan 17, 2011, at 6:58 PM, rwonly@apache.org wrote:
>
> > Author: rwonly
> > Date: Tue Jan 18 02:58:42 2011
> > New Revision: 1060171
> >
> > URL: http://svn.apache.org/viewvc?rev=1060171&view=rev
> > Log:
> > re-enable the codes that deal with the web service fake servlet
> >
> > Modified:
> >
>  geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
> >
> > Modified:
> geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
> > URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java?rev=1060171&r1=1060170&r2=1060171&view=diff
> >
> ==============================================================================
> > ---
> geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
> (original)
> > +++
> geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
> Tue Jan 18 02:58:42 2011
> > @@ -52,6 +52,7 @@ import org.apache.geronimo.gbean.Abstrac
> > import org.apache.geronimo.gbean.GBeanData;
> > import org.apache.geronimo.gbean.GBeanInfoBuilder;
> > import org.apache.geronimo.gbean.GBeanLifecycle;
> > +import org.apache.geronimo.gbean.ReferencePatterns;
> > import org.apache.geronimo.gbean.annotation.GBean;
> > import org.apache.geronimo.gbean.annotation.ParamAttribute;
> > import org.apache.geronimo.gbean.annotation.ParamReference;
> > @@ -581,7 +582,7 @@ public class TomcatModuleBuilder extends
> >
> >             webModuleData.setAttribute("contextAttributes",
> contextAttributes);
> >
> > -            //Handle the role permissions and webservices on the
> servlets.
> > +            //Handle webservices and the role permissions on the
> servlets.
> >             List<org.apache.openejb.jee.Servlet> servletTypes =
> webApp.getServlet();
> >             Map<String, AbstractName> webServices = new HashMap<String,
> AbstractName>();
> >             Class<?> baseServletClass;
> > @@ -590,43 +591,46 @@ public class TomcatModuleBuilder extends
> >             } catch (ClassNotFoundException e) {
> >                 throw new DeploymentException("Could not load
> javax.servlet.Servlet in bundle " + bundle, e);
> >             }
> > -//            for (org.apache.openejb.jee.Servlet servletType :
> servletTypes) {
> > -//
> > -//                if (servletType.getServletClass() != null) {
> > -//                    String servletName =
> servletType.getServletName().trim();
> > -//                    String servletClassName =
> servletType.getServletClass().trim();
> > -//                    Class servletClass;
> > -//                    try {
> > -//                        servletClass =
> webBundle.loadClass(servletClassName);
> > -//                    } catch (ClassNotFoundException e) {
> > -//                        throw new DeploymentException("Could not load
> servlet class " + servletClassName + " from bundle " + bundle, e);
> > -//                    }
> > -//                    if
> (!baseServletClass.isAssignableFrom(servletClass)) {
> > -//                        //fake servletData
> > -//                        AbstractName servletAbstractName =
> moduleContext.getNaming().createChildName(moduleName, servletName,
> NameFactory.SERVLET);
> > -//                        GBeanData servletData = new GBeanData();
> > -//
>  servletData.setAbstractName(servletAbstractName);
> > -//                        //let the web service builder deal with
> configuring the gbean with the web service stack
> > -//                        //Here we just extract the factory reference
> > -//                        boolean configured = false;
> > -//                        for (WebServiceBuilder serviceBuilder :
> webServiceBuilder) {
> > -//                            if
> (serviceBuilder.configurePOJO(servletData, servletName, module,
> servletClassName, moduleContext)) {
> > -//                                configured = true;
> > -//                                break;
> > -//                            }
> > -//                        }
> > -//                        if (!configured) {
> > -//                            throw new DeploymentException("POJO web
> service: " + servletName + " not configured by any web service builder");
> > -//                        }
> > -//                        ReferencePatterns patterns =
> servletData.getReferencePatterns("WebServiceContainerFactory");
> > -//                        AbstractName wsContainerFactoryName =
> patterns.getAbstractName();
> > -//                        webServices.put(servletName,
> wsContainerFactoryName);
> > -//                        //force all the factories to start before the
> web app that needs them.
> > -//
>  webModuleData.addDependency(wsContainerFactoryName);
> > -//                    }
> > -//
> > -//                }
> > -//            }
> > +
> > +
> > +            // web services fake servlet
> > +            for (org.apache.openejb.jee.Servlet servletType :
> servletTypes) {
> > +
> > +                if (servletType.getServletClass() != null) {
> > +                    String servletName =
> servletType.getServletName().trim();
> > +                    String servletClassName =
> servletType.getServletClass().trim();
> > +                    Class servletClass;
> > +                    try {
> > +                        servletClass =
> webBundle.loadClass(servletClassName);
> > +                    } catch (ClassNotFoundException e) {
> > +                        throw new DeploymentException("Could not load
> servlet class " + servletClassName + " from bundle " + bundle, e);
> > +                    }
> > +                    if
> (!baseServletClass.isAssignableFrom(servletClass)) {
> > +                        //fake servletData
> > +                        AbstractName servletAbstractName =
> moduleContext.getNaming().createChildName(moduleName, servletName,
> NameFactory.SERVLET);
> > +                        GBeanData servletData = new GBeanData();
> > +
>  servletData.setAbstractName(servletAbstractName);
> > +                        //let the web service builder deal with
> configuring the gbean with the web service stack
> > +                        //Here we just extract the factory reference
> > +                        boolean configured = false;
> > +                        for (WebServiceBuilder serviceBuilder :
> webServiceBuilder) {
> > +                            if
> (serviceBuilder.configurePOJO(servletData, servletName, module,
> servletClassName, moduleContext)) {
> > +                                configured = true;
> > +                                break;
> > +                            }
> > +                        }
> > +                        if (!configured) {
> > +                            throw new DeploymentException("POJO web
> service: " + servletName + " not configured by any web service builder");
> > +                        }
> > +                        ReferencePatterns patterns =
> servletData.getReferencePatterns("WebServiceContainerFactory");
> > +                        AbstractName wsContainerFactoryName =
> patterns.getAbstractName();
> > +                        webServices.put(servletName,
> wsContainerFactoryName);
> > +                        //force all the factories to start before the
> web app that needs them.
> > +
>  webModuleData.addDependency(wsContainerFactoryName);
> > +                    }
> > +
> > +                }
> > +            }
> >
> >
> >             webModuleData.setAttribute("webServices", webServices);
> >
> >
>
>


-- 
Lei Wang (Rex)
rwonly AT apache.org

Mime
View raw message