Weblogic 升级到 12c:部署失败,因为 url 映射到多个 servlet [英] Weblogic upgrade to 12c: deployment fails because url mapped to multiple servlet

查看:151
本文介绍了Weblogic 升级到 12c:部署失败,因为 url 映射到多个 servlet的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近设置了一个新的 Weblogic 12c 环境.在部署我知道可以在 Weblogic 11g 中运行的应用程序时,我收到错误 Web 应用程序中的 url-pattern/resources/* 映射到多个 Servlet."

它所指的映射位于正在部署的 application.ear 内的 web.xml 中,但它只映射一次:

 <servlet-name>速度</servlet-name><url-pattern>/resources/*</url-pattern></servlet-mapping>

该项目不包含对 url 模式/resources/* 的任何其他引用,有人可以解释重复映射的来源以及我如何解决它吗?

我能找到的最接近的问题是:https://bugster.forgerock.org/jira/si/jira.issueviews:issue-html/OPENAM-7947​​/OPENAM-7947​​.html,已被标记为不可重现.>

来自部署的完整堆栈跟踪:

<错误><部署者><BEA-149205><无法初始化应用程序"由于错误 weblogic.application.ModuleException: weblogic.management.DeploymentException: [HTTP:101401]The url-pattern/resources/* 在 Web 应用程序  中映射到多个 Servlet.weblogic.application.ModuleException: weblogic.management.DeploymentException: [HTTP:101401] Web 应用程序  中的 url-pattern/resources/*映射到多个 Servlet.在 weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:114)在 weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)在 weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:192)在 weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:187)在 weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:83)在 weblogic.application.utils.StateMachineDriver.nextStateInParallel(StateMachineDriver.java:144)在 weblogic.application.internal.flow.ModuleStateDriver.parallelPrepare(ModuleStateDriver.java:46)在 weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:75)在 weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:55)在 weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:731)在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)在 weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:243)在 weblogic.application.internal.EarDeployment.prepare(EarDeployment.java:66)在 weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:158)在 weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:65)在 weblogic.deploy.internal.targetserver.AppDeployment.prepare(AppDeployment.java:158)在 weblogic.management.deploy.internal.DeploymentAdapter$1.doPrepare(DeploymentAdapter.java:41)在 weblogic.management.deploy.internal.DeploymentAdapter.prepare(DeploymentAdapter.java:193)在 weblogic.management.deploy.internal.AppTransition$1.transitionApp(AppTransition.java:31)在 weblogic.management.deploy.internal.ConfiguredDeployments$2.doItem(ConfiguredDeployments.java:684)在 weblogic.management.deploy.internal.parallel.BucketInvoker.invoke(BucketInvoker.java:138)在 weblogic.management.deploy.internal.ConfiguredDeployments.transitionAppsParallel(ConfiguredDeployments.java:692)在 weblogic.management.deploy.internal.ConfiguredDeployments.prepare(ConfiguredDeployments.java:322)在 weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:202)在 weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:207)在 weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:129)在 weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:76)在 sun.reflect.GeneratedMethodAccessor2.invoke(未知来源)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在 java.lang.reflect.Method.invoke(Method.java:498)在 org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1262)在 org.jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:332)在 org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:374)在 org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:471)在 org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:232)在 org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85)在 org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2020)在 org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:114)在 org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:88)在 org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1213)在 org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.run(CurrentTaskFuture.java:1144)在 weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666)在 weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)在 weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)在 weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)在 weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)在 weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)在 weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)在 weblogic.work.ExecuteThread.run(ExecuteThread.java:346)

解决方案

如果在 java 代码中使用 web 注释,则不必再在 web.xml 文件中声明 servlet.

您可以尝试去掉 web.xml 中相应的servlet"和servlet-mapping"标签

似乎 WebLogic 12.1.3 可以处理双重声明(内联注释和 xml),但在 WebLogic 12.2 中不再处理.

当我指定serviceName"参数以及在 web.xml 文件中使用相同值声明 servlet 时,@webservice 注释出现此错误.

I've recently setup a new Weblogic 12c environment. On deploying an application that I know works in Weblogic 11g I get the error "The url-pattern /resources/* in web application is mapped to multiple Servlets."

The mapping it's referring to is in the web.xml inside the application.ear that's being deployed, but it's only mapped once:

  <servlet-mapping>
    <servlet-name>velocity</servlet-name>
    <url-pattern>/resources/*</url-pattern>
  </servlet-mapping> 

The project doesn't contain any other references to the url pattern /resources/*, can someone explain where the duplicated mapping is coming from and how I can work around it?

The closest issue I could find is this: https://bugster.forgerock.org/jira/si/jira.issueviews:issue-html/OPENAM-7947/OPENAM-7947.html, which has been marked as unreproducible.

Full stack trace from deployment:

<Error> <Deployer> <BEA-149205> <Failed to initialize the application "<application_name>" due to error weblogic.application.ModuleException: weblogic.management.DeploymentException: [HTTP:101401]The url-pa
ttern /resources/* in web application <application_name> is mapped to multiple Servlets.
weblogic.application.ModuleException: weblogic.management.DeploymentException: [HTTP:101401]The url-pattern /resources/* in web application <application_name> is mapped to multiple Servlets.
        at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:114)
        at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
        at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:192)
        at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:187)
        at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:83)
        at weblogic.application.utils.StateMachineDriver.nextStateInParallel(StateMachineDriver.java:144)
        at weblogic.application.internal.flow.ModuleStateDriver.parallelPrepare(ModuleStateDriver.java:46)
        at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:75)
        at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:55)
        at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:731)
        at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
        at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:243)
        at weblogic.application.internal.EarDeployment.prepare(EarDeployment.java:66)
        at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:158)
        at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:65)
        at weblogic.deploy.internal.targetserver.AppDeployment.prepare(AppDeployment.java:158)
        at weblogic.management.deploy.internal.DeploymentAdapter$1.doPrepare(DeploymentAdapter.java:41)
        at weblogic.management.deploy.internal.DeploymentAdapter.prepare(DeploymentAdapter.java:193)
        at weblogic.management.deploy.internal.AppTransition$1.transitionApp(AppTransition.java:31)
        at weblogic.management.deploy.internal.ConfiguredDeployments$2.doItem(ConfiguredDeployments.java:684)
        at weblogic.management.deploy.internal.parallel.BucketInvoker.invoke(BucketInvoker.java:138)
        at weblogic.management.deploy.internal.ConfiguredDeployments.transitionAppsParallel(ConfiguredDeployments.java:692)
        at weblogic.management.deploy.internal.ConfiguredDeployments.prepare(ConfiguredDeployments.java:322)
        at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:202)
        at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:207)
        at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:129)
        at weblogic.server.AbstractServerService.postConstruct(AbstractServerService.java:76)
        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1262)
        at org.jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:332)
        at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:374)
        at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:471)
        at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:232)
        at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85)
        at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2020)
        at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:114)
        at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:88)
        at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1213)
        at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.run(CurrentTaskFuture.java:1144)
        at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666)
        at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
        at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
        at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
        at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
        at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)

解决方案

If you use web annotations in java code, you don't have to declare the servlet in the web.xml file any more.

You can try by removing the corresponding "servlet" and "servlet-mapping" tags in web.xml

It seems that WebLogic 12.1.3 can deal with double declaration (inline annotation & xml) but not anymore in WebLogic 12.2.

I had this error with @webservice annotation when I specified the "serviceName" parameter and when I declared the servlet in web.xml file with the same value.

这篇关于Weblogic 升级到 12c:部署失败,因为 url 映射到多个 servlet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆