Seeing a deployment failure on Tomcat assemblies when trying to run the
stand-alone BVAL TCK and was wondering if it was related to the below
changes, since a NPE is occurring in MergeHelper.java now?
2010-08-10 17:19:09,565 WARN [TomcatModuleBuilder] Web application .
does not c
ontain a WEB-INF/geronimo-web.xml deployment plan. This may or may not
be a problem, depending on whether you have things like resource
references that need to
be resolved. You can also give the deployer a separate deployment plan
file on the command line.
2010-08-10 17:19:10,849 ERROR [Deployer] Deployment failed due
tojava.lang.NullPointerException
at
org.apache.geronimo.web25.deployment.merge.MergeHelper.saveOrderedLibAttribute(MergeHelper.java:563)
at
org.apache.geronimo.web25.deployment.merge.MergeHelper.relativeOrderWebFragments(MergeHelper.java:479)
at
org.apache.geronimo.web25.deployment.merge.MergeHelper.sortWebFragments(MergeHelper.java:555)
at
org.apache.geronimo.web25.deployment.merge.MergeHelper.processWebFragmentsAndAnnotations(MergeHelper.java:378)
at
org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder.basicInitContext(AbstractWebModuleBuilder.java:464)
. . .
Deployer operation failed: java.lang.NullPointerException
org.apache.geronimo.common.DeploymentException:
java.lang.NullPointerException at
org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:284)
at
org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:138)
at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597) at
org.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(Refl
ectionMethodInvoker.java:34)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperatio
n.java:131) at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.
java:872)
at
org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:245)
at
org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:344)
. . .
On 8/9/10 4:18 AM, [email protected] wrote:
> Author: xuhaihong
> Date: Mon Aug 9 08:18:04 2010
> New Revision: 983551
>
> URL: http://svn.apache.org/viewvc?rev=983551&view=rev
> Log:
> Ignore the mapping configurations from web-fragment.xml and annotations while
> they are configured in web.xml.
>
> Modified:
>
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
>
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
>
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
>
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
>
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
>
> Modified:
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
> URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java?rev=983551&r1=983550&r2=983551&view=diff
> ==============================================================================
> ---
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
> (original)
> +++
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
> Mon Aug 9 08:18:04 2010
> @@ -51,7 +51,6 @@ import org.apache.geronimo.components.ja
> import org.apache.geronimo.components.jaspi.model.JaspiXmlUtil;
> import org.apache.geronimo.components.jaspi.model.ServerAuthConfigType;
> import org.apache.geronimo.components.jaspi.model.ServerAuthContextType;
> -import org.apache.geronimo.deployment.ClassPathUtils;
> import org.apache.geronimo.deployment.ModuleIDBuilder;
> import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
> import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
>
> Modified:
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
> URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> ==============================================================================
> ---
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
> (original)
> +++
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMappingMergeHandler.java
> Mon Aug 9 08:18:04 2010
> @@ -35,7 +35,7 @@ public class FilterMappingMergeHandler i
> private List<SubMergeHandler<FilterMapping, FilterMapping>>
> subMergeHandlers;
>
> public FilterMappingMergeHandler() {
> - subMergeHandlers = new ArrayList<SubMergeHandler<FilterMapping,
> FilterMapping>>();
> + subMergeHandlers = new ArrayList<SubMergeHandler<FilterMapping,
> FilterMapping>>(3);
> subMergeHandlers.add(new FilterMappingUrlPatternMergeHandler());
> subMergeHandlers.add(new FilterMappingServletNameMergeHandler());
> subMergeHandlers.add(new FilterMappingDispatcherMergeHandler());
> @@ -53,6 +53,9 @@ public class FilterMappingMergeHandler i
> subMergeHandler.add(srcFilterMapping, mergeContext);
> }
> } else {
> + if (isFilterMappingFromWebXml(filterName, mergeContext)) {
> + continue;
> + }
> if (isFilterMappingFromAnnotation(filterName, mergeContext))
> {
> //If the current url-patterns configurations are from
> annotations, so let's drop them
> targetFilterMapping.getUrlPattern().clear();
> @@ -79,6 +82,7 @@ public class FilterMappingMergeHandler i
> for (FilterMapping filterMapping : webApp.getFilterMapping()) {
> String filterName = filterMapping.getFilterName();
> context.setAttribute(createFilterMappingKey(filterName),
> filterMapping);
> + context.setAttribute(createFilterMappingSourceKey(filterName),
> ElementSource.WEB_XML);
> }
> for (SubMergeHandler<FilterMapping, FilterMapping> subMergeHandler :
> subMergeHandlers) {
> subMergeHandler.preProcessWebXmlElement(webApp, context);
> @@ -106,6 +110,11 @@ public class FilterMappingMergeHandler i
> return elementSource != null &&
> elementSource.equals(ElementSource.ANNOTATION);
> }
>
> + public static boolean isFilterMappingFromWebXml(String filterName,
> MergeContext mergeContext) {
> + ElementSource elementSource = (ElementSource)
> mergeContext.getAttribute(createFilterMappingSourceKey(filterName));
> + return elementSource != null &&
> elementSource.equals(ElementSource.WEB_XML);
> + }
> +
> public static void addFilterMapping(FilterMapping filterMapping,
> MergeContext mergeContext) {
>
> mergeContext.setAttribute(createFilterMappingKey(filterMapping.getFilterName()),
> filterMapping);
> }
>
> Modified:
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
> URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> ==============================================================================
> ---
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
> (original)
> +++
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/FilterMergeHandler.java
> Mon Aug 9 08:18:04 2010
> @@ -34,7 +34,7 @@ public class FilterMergeHandler implemen
> private List<SubMergeHandler<Filter, Filter>> subMergeHandlers;
>
> public FilterMergeHandler() {
> - subMergeHandlers = new ArrayList<SubMergeHandler<Filter, Filter>>();
> + subMergeHandlers = new ArrayList<SubMergeHandler<Filter, Filter>>(1);
> subMergeHandlers.add(new FilterInitParamMergeHandler());
> }
>
>
> Modified:
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
> URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> ==============================================================================
> ---
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
> (original)
> +++
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
> Mon Aug 9 08:18:04 2010
> @@ -35,7 +35,7 @@ public class ServletMappingMergeHandler
> private List<SubMergeHandler<ServletMapping, ServletMapping>>
> subMergeHandlers;
>
> public ServletMappingMergeHandler() {
> - subMergeHandlers = new ArrayList<SubMergeHandler<ServletMapping,
> ServletMapping>>();
> + subMergeHandlers = new ArrayList<SubMergeHandler<ServletMapping,
> ServletMapping>>(1);
> subMergeHandlers.add(new ServletMappingUrlPatternMergeHandler());
> }
>
> @@ -51,6 +51,10 @@ public class ServletMappingMergeHandler
> subMergeHandler.add(srcServletMapping, mergeContext);
> }
> } else {
> + //If the servlet-mapping is configured in the central
> web.xml file, all the configurations from the fragment xml and annotations
> are ignored
> + if(isServletMappingFromWebXml(servletName, mergeContext)) {
> + continue;
> + }
> if (isServletMappingFromAnnotation(servletName,
> mergeContext) && !srcServletMapping.getUrlPattern().isEmpty()) {
> //If the current url-patterns configurations are from
> annotations, so let's drop them
> targetServletMapping.getUrlPattern().clear();
> @@ -73,8 +77,9 @@ public class ServletMappingMergeHandler
> @Override
> public void preProcessWebXmlElement(WebApp webApp, MergeContext context)
> throws DeploymentException {
> for (ServletMapping servletMapping : webApp.getServletMapping()) {
> - String filterName = servletMapping.getServletName();
> - context.setAttribute(createServletMappingKey(filterName),
> servletMapping);
> + String servletName = servletMapping.getServletName();
> + context.setAttribute(createServletMappingKey(servletName),
> servletMapping);
> + context.setAttribute(createServletMappingSourceKey(servletName),
> ElementSource.WEB_XML);
> }
> for (SubMergeHandler<ServletMapping, ServletMapping> subMergeHandler
> : subMergeHandlers) {
> subMergeHandler.preProcessWebXmlElement(webApp, context);
> @@ -101,4 +106,9 @@ public class ServletMappingMergeHandler
> ElementSource elementSource = (ElementSource)
> mergeContext.getAttribute(createServletMappingSourceKey(servletName));
> return elementSource != null &&
> elementSource.equals(ElementSource.ANNOTATION);
> }
> +
> + public static boolean isServletMappingFromWebXml(String servletName,
> MergeContext mergeContext) {
> + ElementSource elementSource = (ElementSource)
> mergeContext.getAttribute(createServletMappingSourceKey(servletName));
> + return elementSource != null &&
> elementSource.equals(ElementSource.WEB_XML);
> + }
> }
>
> Modified:
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
> URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java?rev=983551&r1=983550&r2=983551&view=diff
> ==============================================================================
> ---
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
> (original)
> +++
> geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
> Mon Aug 9 08:18:04 2010
> @@ -34,7 +34,7 @@ public class ServletMergeHandler impleme
> private List<SubMergeHandler<Servlet, Servlet>> subMergeHandlers;
>
> public ServletMergeHandler() {
> - subMergeHandlers = new ArrayList<SubMergeHandler<Servlet,
> Servlet>>();
> + subMergeHandlers = new ArrayList<SubMergeHandler<Servlet,
> Servlet>>(2);
> subMergeHandlers.add(new ServletInitParamMergeHandler());
> subMergeHandlers.add(new ServletLoadOnStartupMergeHandler());
> }
>
>
>