geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.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 Tue, 18 Jan 2011 08:23:52 GMT
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);
> 
> 


Mime
View raw message