deployment - 无法在 WebLogic 上的 EAR 中部署 WAR

标签 deployment war jsf-2.2 weblogic12c ear

我有一个 Web 应用程序在 WebLogic 应用程序服务器 12.2.1.1 上的 JSF 2.2 上运行。

我有一个简单的 java 类,并尝试使用 CDI 将其初始化为 ApplicationScoped 对象。这作为 WAR 部署得非常好。

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;

@Named
@ApplicationScoped
public class AppContext {
    public AppContext() {
    }
}

但是,当我将此 WAR 添加到 EAR 时,它无法部署。我正在尝试所有可能的解决方案,但此时似乎没有任何效果。异常日志如下:
weblogic.management.DeploymentException: CDI deployment failure:WELD-001414: Bean name is ambiguous. Name appContext resolves to beans: [Managed Bean [class beans.AppContext] with qualifiers [@Default @Any @Named], Managed Bean [class beans.AppContext] with qualifiers [@Default @Any @Named]]:org.jboss.weld.exceptions.DeploymentException:WELD-001414: Bean name is ambiguous. Name appContext resolves to beans: [Managed Bean [class beans.AppContext] with qualifiers [@Default @Any @Named], Managed Bean [class beans.AppContext] with qualifiers [@Default @Any @Named]]
    at org.jboss.weld.bootstrap.Validator.validateBeanNames(Validator.java:641)
    at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:487)
    at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:446)
    at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:90)
    at com.oracle.injection.provider.weld.WeldInjectionContainer.start(WeldInjectionContainer.java:150)
    Truncated. see log file for complete stacktrace

另外 WEB-INF\beans.xml 如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       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/beans_1_0.xsd">
</beans>

应用程序运行于:
NetBeans IDE 8.2;
JDK 1.8 b121;
Mojarra JSF 2.2;
WebLogic 12.2.1.1;

非常感谢有关解决此问题的任何提示。

最佳答案

它作为独立 WAR 部署但作为 EAR 失败的事实是问题的一个相当明确的指标。应用程序包含来自外部库的具有相同 bean 名称的对象,或者此类本身已被复制到 EAR 中的其他位置。检查您没有将此类(或包含此类的 jar)加载到 EAR 中的任何其他位置; APP-INF 浮现在脑海中。如果您还没有,确定它是外部库还是您自己的部署路径的最快方法是将类重命名为可以确保唯一的名称(例如 MyUniqueBeanName)。如果重命名后问题仍然存在,则很可能是您的部署。

关于deployment - 无法在 WebLogic 上的 EAR 中部署 WAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42865855/

相关文章:

hibernate - 如何使用 Hibernate 在 PostGIS 中将 geojson(在 javascript 中)保存到几何(MultiPolygon,4326)

javascript - AJAX 构建和部署环境,尤其是 javascript 和 css min,完整版本

c# - ILMerge 最佳实践

java - 使用嵌入式 jetty 服务器运行 Web 应用程序 (WAR)

java - 我需要安装 Java 才能在 Tomcat 中部署应用程序吗?

java - 从 WAR 获取实现版本

jsf-2 - 什么时候使用 preRenderView 和 viewAction?

navigation - 在 jsf-2.2 中的 faces-config 中传递重定向参数

sharepoint - 在VMware中运行VMware?

azure - 使用 Azure CLI 部署 .zip Function App 时权限被拒绝