将ear文件部署到weblogic 10g

Posted

技术标签:

【中文标题】将ear文件部署到weblogic 10g【英文标题】:deploy ear file to weblogic 10g 【发布时间】:2013-02-06 17:40:15 【问题描述】:

我在 java ee 中编写了项目代码。通过使用 java ee 版本 6。当我尝试将我的 ear 文件部署到 weblogic 10g 中时,我收到以下错误:

我怎样才能实现它?如何正确部署文件?

无法访问选定的应用程序。 AppMerge 流程进展中的异常 AppMerge 流程进展中的异常 [J2EE:160161] 解析 1BB.ear 的应用程序描述符时出错: weblogic.descriptor.DescriptorException:解组器失败 weblogic.descriptor.internal.MarshallerFactory$1.createDescriptor(MarshallerFactory.java:152) 在 weblogic.descriptor.BasicDescriptorManager.createDescriptor(BasicDescriptorManager.java:306) 在 weblogic.application.descriptor.AbstractDescriptorLoader2.getDescriptorBeanFromReader(AbstractDescriptorLoader2.java:788) 在 weblogic.application.descriptor.AbstractDescriptorLoader2.createDescriptorBean(AbstractDescriptorLoader2.java:409) 在 weblogic.application.descriptor.AbstractDescriptorLoader2.loadDescriptorBeanWithoutPlan(AbstractDescriptorLoader2.java:759) 在 weblogic.application.descriptor.AbstractDescriptorLoader2.loadDescriptorBean(AbstractDescriptorLoader2.java:768) 在 weblogic.application.ApplicationDescriptor.getWeblogicApplicationDescriptor(ApplicationDescriptor.java:339) 在 weblogic.application.compiler.CompilerCtx.setApplicationDescriptor(CompilerCtx.java:139) 在 weblogic.application.compiler.AppcUtils.setDDs(AppcUtils.java:142) 在 weblogic.application.compiler.flow.DescriptorParsingFlow.compile(DescriptorParsingFlow.java:57) 在 weblogic.application.compiler.FlowDriver$FlowStateChange.next(FlowDriver.java:69) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37) 在 weblogic.application.compiler.FlowDriver.nextState(FlowDriver.java:36) 在 weblogic.application.compiler.FlowDriver$CompilerFlowDriver.compile(FlowDriver.java:96) 在 weblogic.application.compiler.ReadOnlyEarMerger.merge(ReadOnlyEarMerger.java:49) 在 weblogic.application.compiler.flow.AppMergerFlow.mergeInput(AppMergerFlow.java:94) 在 weblogic.application.compiler.flow.AppMergerFlow.compile(AppMergerFlow.java:47) 在 weblogic.application.compiler.FlowDriver$FlowStateChange.next(FlowDriver.java:69) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37) 在 weblogic.application.compiler.FlowDriver.nextState(FlowDriver.java:36) 在 weblogic.application.compiler.FlowDriver$CompilerFlowDriver.compile(FlowDriver.java:96) 在 weblogic.application.compiler.AppMerge.runBody(AppMerge.java:157) 在 weblogic.utils.compiler.Tool.run(Tool.java:158) 在 weblogic.utils.compiler.Tool.run(Tool.java:115) 在 weblogic.application.compiler.AppMerge.merge(AppMerge.java:169) 在 weblogic.deploy.api.internal.utils.AppMerger.merge(AppMerger.java:88) 在 weblogic.deploy.api.internal.utils.AppMerger.getMergedApp(AppMerger.java:63) 在 weblogic.deploy.api.model.internal.WebLogicDeployableObjectFactoryImpl.createDeployableObject(WebLogicDeployableObjectFactoryImpl.java:181) 在 weblogic.deploy.api.model.internal.WebLogicDeployableObjectFactoryImpl.createLazyDeployableObject(WebLogicDeployableObjectFactoryImpl.java:156) 在 weblogic.deploy.api.tools.SessionHelper.inspect(SessionHelper.java:661) 在 com.bea.console.actions.app.install.Flow$2.execute(Flow.java:463) 在 com.bea.console.utils.DeploymentUtils.runDeploymentAction(DeploymentUtils.java:4625) 在 com.bea.console.actions.app.install.Flow.appSelected(Flow.java:461) 在 sun.reflect.GeneratedMethodAccessor1036.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(FlowController.java:870) 在 org.apache.beehive.netui.pageflow.FlowController.getActionMethodForward(FlowController.java:809) 在 org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:478) 在 org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:306) 在 org.apache.beehive.netui.pageflow.FlowController.execute(FlowController.java:336) 在 org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute(FlowControllerAction.java:52) 在 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) 在 org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(PageFlowRequestProcessor.java:97) 在 org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunner.execute(PageFlowRequestProcessor.java:2044) 在 org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:64) 在 org.apache.beehive.netui.pageflow.interceptor.action.ActionInterceptor.wrapAction(ActionInterceptor.java:184) 在 org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.invoke(ActionInterceptors.java:50) 在 org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:58) 在 org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors.wrapAction(ActionInterceptors.java:87) 在 org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processActionPerform(PageFlowRequestProcessor.java:2116) 在 com.bea.console.internal.ConsolePageFlowRequestProcessor.processActionPerform(ConsolePageFlowRequestProcessor.java:255) 在 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) 在 org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:556) 在 org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:853) 在 org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:631) 在 org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:158) 在 com.bea.console.internal.ConsoleActionServlet.process(ConsoleActionServlet.java:256) 在 org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) 在 com.bea.console.internal.ConsoleActionServlet.doGet(ConsoleActionServlet.java:133) 在 org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlowUtils.java:1199) 在 com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.executeAction(ScopedContentCommonSupport.java:686) 在 com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.processActionInternal(ScopedContentCommonSupport.java:142) 在 com.bea.portlet.adapter.scopedcontent.PageFlowStubImpl.processAction(PageFlowStubImpl.java:106) 在 com.bea.portlet.adapter.NetuiActionHandler.raiseScopedAction(NetuiActionHandler.java:111) 在 com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:181) 在 com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:167) 在 com.bea.netuix.servlets.controls.content.NetuiContent.handlePostbackData(NetuiContent.java:225) 在 com.bea.netuix.nf.ControlLifecycle$2.visit(ControlLifecycle.java:180) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:324) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334) 在 com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:130) 在 com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:395) 在 com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:361) 在 com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:352) 在 com.bea.netuix.nf.Lifecycle.runInbound(Lifecycle.java:184) 在 com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:159) 在 com.bea.netuix.servlets.manager.UIServlet.runLifecycle(UIServlet.java:388) 在 com.bea.netuix.servlets.manager.UIServlet.doPost(UIServlet.java:258) 在 com.bea.netuix.servlets.manager.UIServlet.service(UIServlet.java:199) 在 com.bea.netuix.servlets.manager.SingleFileServlet.service(SingleFileServlet.java:251) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 在 com.bea.console.utils.MBeanUtilsInitSingleFileServlet.service(MBeanUtilsInitSingleFileServlet.java:54) 在 weblogic.servlet.AsyncInitServlet.service(AsyncInitServlet.java:130) 在 weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 在 weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 在 weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 在 weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 在 weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) 在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) 在 weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496) 在 weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 在 weblogic.security.service.SecurityManager.runAs(未知来源) 在 weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180) 在 weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086) 在 weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406) 在 weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 在 weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 原因:com.bea.xml.XmlException: failed to load java type对应e=weblogic-application@http://xmlns.oracle.com/weblogic/weblogic-application 在 com.bea.staxb.runtime.internal.UnmarshalResult.getPojoBindingType(UnmarshalResult.java:361) 在 com.bea.staxb.runtime.internal.UnmarshalResult.determineTypeForGlobalElement(UnmarshalResult.java:316) 在 com.bea.staxb.runtime.internal.UnmarshalResult.determineTypeForGlobalElement(UnmarshalResult.java:326) 在 com.bea.staxb.runtime.internal.UnmarshalResult.determineRootType(UnmarshalResult.java:307) 在 com.bea.staxb.runtime.internal.UnmarshalResult.unmarshalDocument(UnmarshalResult.java:158) 在 com.bea.staxb.runtime.internal.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:65) 在 weblogic.descriptor.internal.MarshallerFactory$1.createDescriptor(MarshallerFactory.java:141) ... 119 更多。

这是我的 weblogic-application.xml 文件:

    <?xml version="1.0" encoding="UTF-8"?>
<weblogic-application xmlns="http://xmlns.oracle.com/weblogic/weblogic-application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/javaee_5.xsd http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-application/1.0/weblogic-application.xsd"/>

【问题讨论】:

您的 EAR 有一个位于 META-INF/weblogic-application.xml 的文件 - 检查该文件是否与架构 docs.oracle.com/cd/E12840_01/wls/docs103/programming/… 和 docs.oracle.com/cd/E12840_01/wls/docs103/programming/… 中的内容匹配 我已经添加了我当前的 weblogic-application.xml 【参考方案1】:

尝试将 3 个文件添加到 EAR:

1) META-INF\application.xml

<?xml version="1.0" encoding="ASCII"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">
  <display-name>My App</display-name>
  <module>
    <ejb>appEJB.jar</ejb>
  </module>
  <module>
    <web>
      <web-uri>app.war</web-uri>
      <context-root>app</context-root>
    </web>
  </module>
</application>

2) META-INF\weblogic-application.xml

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-application xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/javaee_5.xsd http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-application/1.0/weblogic-application.xsd">
    <!--weblogic-version:10.3.2-->
    <wls:application-param>
        <wls:param-name>webapp.encoding.default</wls:param-name>
        <wls:param-value>UTF-8</wls:param-value>
    </wls:application-param>
</wls:weblogic-application>

3) META-INF\MANIFEST.MF

Manifest-Version: 1.0
Class-Path: 
Weblogic-Application-Version: 1.0

【讨论】:

【参考方案2】:

这个错误可能有两种情况,

    web.xml 文件已损坏 web.xml 文件中缺少任何配置。 web-app 标签可能没有正确定义,这取决于您的项目。

在我的情况下,错误是由第一点引起的。

【讨论】:

【参考方案3】:

尝试保留 web.xml @WebContent 而不是 WEB-INF(如果以防万一)。这解决了我的问题。

【讨论】:

什么是@WebContent....?我猜是一个文件夹?准确可以帮助其他人更好地理解。谢谢!

以上是关于将ear文件部署到weblogic 10g的主要内容,如果未能解决你的问题,请参考以下文章

Weblogic 10.3.4 上的 Exploded EAR 部署失败

在 WebLogic 12 上部署 ear 文件时出现 JSF 错误

Weblogic部署失败

Weblogic:在ejb-jar文件中找不到EJB

在 Weblogic 12c 中部署 EAR 应用程序

weblogic在阶段找不到.ear,但它在文件系统上