2 Replies Latest reply: Feb 28, 2012 3:46 PM by 741357 RSS

    No overloaded servlets in WLS?

    741357
      We are getting ready to migrate from OAS to WLS and I ran into an issue while loading our JWS app WAR into WLS. From what I can tell from the below log, WLS sees repeat init-param service descriptors with different parameters as duplicates. This worked fine in OAS - is there a setting in WLS to allow this, or do we have to rename the services so they are unique?

      [EDIT - I found this OLD post by Rob Woollen saying this should be fixed in the next version... but obviously this was not fixed, or at least does not work in the present version.

      Re: successfully Deployable CE web desktop war in 8.1 fails to Deploy in 9.
      Posted: Jul 7, 2006 1:14 PM   in response to: BEAGuest in response to: BEAGuest           
      Click to report abuse...             Click to reply to this thread      Reply
      The problem is most likely that you have a duplicate entry in your servlet-mappings in the web.xml. WLS 8.1 ignored this, but 9 is not allowing it. 9 should be patched to allow it, but I don't believe it's been fixed yet.

      -- Rob]

      From web.xml:

                <init-param>                    
                     <param-name>SessionCommand: createWorkspace</param-name>                    
                     <param-value>com.l3.cvc.service.server.workspace.WorkspaceUtil.createWorkspace(HttpSession,String, String, String)</param-value>          
                </init-param>     
                
                <init-param>                    
                     <param-name>SessionCommand: createWorkspace</param-name>                    
                     <param-value>com.l3.cvc.service.server.workspace.WorkspaceUtil.createWorkspace(HttpSession,String, String, String, Long)</param-value>          
                </init-param>     


      From AdminServer.log:

      <BEA-160197> <Unable to load descriptor C:\Oracle\Middleware\user_projects\domains\cvc_domain\servers\AdminServer\upload\Dev.war/WEB-INF/web.xml of module Dev.war. The error is weblogic.descriptor.DescriptorException: Unmarshaller failed
           at weblogic.descriptor.internal.MarshallerFactory$1.createDescriptor(MarshallerFactory.java:161)
           at weblogic.descriptor.BasicDescriptorManager.createDescriptor(BasicDescriptorManager.java:323)
           at weblogic.application.descriptor.AbstractDescriptorLoader2.getDescriptorBeanFromReader(AbstractDescriptorLoader2.java:788)
           at weblogic.application.descriptor.AbstractDescriptorLoader2.createDescriptorBean(AbstractDescriptorLoader2.java:409)
           at weblogic.application.descriptor.AbstractDescriptorLoader2.loadDescriptorBeanWithoutPlan(AbstractDescriptorLoader2.java:759)
           at weblogic.application.descriptor.AbstractDescriptorLoader2.loadDescriptorBean(AbstractDescriptorLoader2.java:768)
           at weblogic.servlet.internal.WebAppDescriptor.getWebAppBean(WebAppDescriptor.java:141)
           at weblogic.servlet.utils.WarUtils.getWebAppBean(WarUtils.java:124)
           at weblogic.application.compiler.WARModule.processLibraries(WARModule.java:413)
           at weblogic.application.compiler.WARModule.merge(WARModule.java:457)
           at weblogic.application.compiler.flow.SingleModuleMergeFlow.proecessModule(SingleModuleMergeFlow.java:17)
           at weblogic.application.compiler.flow.SingleModuleFlow.compile(SingleModuleFlow.java:36)
           at weblogic.application.compiler.FlowDriver$FlowStateChange.next(FlowDriver.java:70)
           at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
           at weblogic.application.compiler.FlowDriver.nextState(FlowDriver.java:36)
           at weblogic.application.compiler.FlowDriver$CompilerFlowDriver.compile(FlowDriver.java:97)
           at weblogic.application.compiler.ReadOnlyWarMerger.merge(ReadOnlyWarMerger.java:28)
           at weblogic.application.compiler.flow.AppMergerFlow.mergeInput(AppMergerFlow.java:88)
           at weblogic.application.compiler.flow.AppMergerFlow.compile(AppMergerFlow.java:42)
           at weblogic.application.compiler.FlowDriver$FlowStateChange.next(FlowDriver.java:70)
           at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
           at weblogic.application.compiler.FlowDriver.nextState(FlowDriver.java:36)
           at weblogic.application.compiler.FlowDriver$CompilerFlowDriver.compile(FlowDriver.java:97)
           at weblogic.application.compiler.AppMerge.runBody(AppMerge.java:157)
           at weblogic.utils.compiler.Tool.run(Tool.java:158)
           at weblogic.utils.compiler.Tool.run(Tool.java:116)
           at weblogic.application.compiler.AppMerge.merge(AppMerge.java:170)
           at weblogic.deploy.api.internal.utils.AppMerger.merge(AppMerger.java:88)
           at weblogic.deploy.api.internal.utils.AppMerger.getMergedApp(AppMerger.java:63)
           at weblogic.deploy.api.model.internal.WebLogicDeployableObjectFactoryImpl.createDeployableObject(WebLogicDeployableObjectFactoryImpl.java:181)
           at weblogic.deploy.api.model.internal.WebLogicDeployableObjectFactoryImpl.createLazyDeployableObject(WebLogicDeployableObjectFactoryImpl.java:156)
           at weblogic.deploy.api.tools.SessionHelper.inspect(SessionHelper.java:661)
           at com.bea.console.actions.app.install.Flow$2.execute(Flow.java:470)
           at com.bea.console.utils.DeploymentUtils.runDeploymentAction(DeploymentUtils.java:5022)
           at com.bea.console.actions.app.install.Flow.appSelected(Flow.java:467)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
           at java.lang.reflect.Method.invoke(Method.java:597)
           at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(FlowController.java:870)
           at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForward(FlowController.java:809)
           at org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:478)
           at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:306)
           at org.apache.beehive.netui.pageflow.FlowController.execute(FlowController.java:336)
           at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute(FlowControllerAction.java:52)
           at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
           at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(PageFlowRequestProcessor.java:97)
           at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunner.execute(PageFlowRequestProcessor.java:2044)
           at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:64)
           at org.apache.beehive.netui.pageflow.interceptor.action.ActionInterceptor.wrapAction(ActionInterceptor.java:184)
           at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.invoke(ActionInterceptors.java:50)
           at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:58)
           at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors.wrapAction(ActionInterceptors.java:87)
           at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processActionPerform(PageFlowRequestProcessor.java:2121)
           at com.bea.console.internal.ConsolePageFlowRequestProcessor.processActionPerform(ConsolePageFlowRequestProcessor.java:261)
           at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
           at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:556)
           at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:853)
           at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:631)
           at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:159)
           at com.bea.console.internal.ConsoleActionServlet.process(ConsoleActionServlet.java:263)
           at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:416)
           at com.bea.console.internal.ConsoleActionServlet.doGet(ConsoleActionServlet.java:135)
           at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlowUtils.java:1199)
           at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.executeAction(ScopedContentCommonSupport.java:686)
           at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.processActionInternal(ScopedContentCommonSupport.java:142)
           at com.bea.portlet.adapter.scopedcontent.PageFlowStubImpl.processAction(PageFlowStubImpl.java:106)
           at com.bea.portlet.adapter.NetuiActionHandler.raiseScopedAction(NetuiActionHandler.java:111)
           at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:181)
           at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:167)
           at com.bea.netuix.servlets.controls.content.NetuiContent.handlePostbackData(NetuiContent.java:227)
           at com.bea.netuix.nf.ControlLifecycle$2.visit(ControlLifecycle.java:180)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:324)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:332)
           at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:130)
           at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:395)
           at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:361)
           at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:352)
           at com.bea.netuix.nf.Lifecycle.runInbound(Lifecycle.java:184)
           at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:159)
           at com.bea.netuix.servlets.manager.UIServlet.runLifecycle(UIServlet.java:389)
           at com.bea.netuix.servlets.manager.UIServlet.doPost(UIServlet.java:258)
           at com.bea.netuix.servlets.manager.UIServlet.service(UIServlet.java:199)
           at com.bea.netuix.servlets.manager.SingleFileServlet.service(SingleFileServlet.java:253)
           at javax.servlet.http.HttpServlet.service(HttpServlet.java:821)
           at com.bea.console.utils.MBeanUtilsInitSingleFileServlet.service(MBeanUtilsInitSingleFileServlet.java:47)
           at weblogic.servlet.AsyncInitServlet.service(AsyncInitServlet.java:131)
           at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
           at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
           at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
           at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27)
           at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:57)
           at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
           at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:57)
           at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
           at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
           at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
           at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
           at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
           at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
           at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
           at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
           at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
      Caused by: com.bea.xml.XmlException: weblogic.descriptor.BeanAlreadyExistsException: Bean already exists: "weblogic.j2ee.descriptor.ParamValueBeanImpl@fba1b127(/[rpcServlet]/InitParams[SessionCommand: createWorkspace])"
           at com.bea.staxb.runtime.internal.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:54)
           at com.bea.staxb.runtime.internal.RuntimeBindingType$BeanRuntimeProperty.setValue(RuntimeBindingType.java:539)
           at com.bea.staxb.runtime.internal.AttributeRuntimeBindingType$QNameRuntimeProperty.fillCollection(AttributeRuntimeBindingType.java:381)
           at com.bea.staxb.runtime.internal.MultiIntermediary.getFinalValue(MultiIntermediary.java:52)
           at com.bea.staxb.runtime.internal.AttributeRuntimeBindingType.getFinalObjectFromIntermediary(AttributeRuntimeBindingType.java:140)
           at com.bea.staxb.runtime.internal.LiteralUnmarshalResult.unmarshalElementProperty(LiteralUnmarshalResult.java:185)
           at com.bea.staxb.runtime.internal.LiteralUnmarshalResult.extractAndFillElementProp(LiteralUnmarshalResult.java:156)
           at com.bea.staxb.runtime.internal.ByNameUnmarshaller.deserializeContents(ByNameUnmarshaller.java:51)
           at com.bea.staxb.runtime.internal.AttributeUnmarshaller.unmarshalIntoIntermediary(AttributeUnmarshaller.java:47)
           at com.bea.staxb.runtime.internal.UnmarshalResult.unmarshalBindingType(UnmarshalResult.java:199)
           at com.bea.staxb.runtime.internal.UnmarshalResult.unmarshalDocument(UnmarshalResult.java:169)
           at com.bea.staxb.runtime.internal.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:65)
           at weblogic.descriptor.internal.MarshallerFactory$1.createDescriptor(MarshallerFactory.java:150)
           ... 123 more
        • 1. Re: No overloaded servlet init parameters in WLS?
          Steve Button-Oracle
          It looks to me that there is no absolute prescription for how this must be handled in the Servlet specification or in the xsd of the web.xml file.

          The Servlet API shows that the call to get an init parameter returns a String, not any type of Collection or array.

          java.lang.String getInitParameter(java.lang.String name)

          Which to me, indicates that the (unstated?) intention is to have unique name/value pairs. If you are having multiple values defined with the same parameter name, which would you expect to be returned on the getInitParameter call? The first? The last? Or it doesn't matter as long as it's consistent? Still, it's non-standard behaviour.

          But then I checked the behaviour on GlassFish 3.1.1 and WLS 12.1.1.

          On GlassFish the application does deploy and doesn't throw an error. It returns the first name value that was specified in web.xml when getInitParameter is called.

          On the latest WLS release (12c, 12.1.1.0) it followed the same model as GlassFish: deployed, returned first entry of the given name.

          I think both those observations, particularly the latter, would give you a valid case with Oracle Support if you open a service request to get this addressed on the release you are using.

          -steve-
          • 2. Re: No overloaded servlet init parameters in WLS?
            741357
            Thanks Steve for that followup.

            I didn't realize there was a 12x release out - but went to look and noticed a new release tag on it. I'll give that a try.