当前位置: 首页 > 知识库问答 >
问题:

在TomEE中使用Weld CDI代替OpenWebBeans

郑曜灿
2023-03-14

我想使用Mojarra和Weld在Apache TomEE上运行一个WebApp。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>TestWeldOnTomEE</display-name>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>javax.faces.PROJECT_STATE</param-name>
    <param-value>Development</param-value>
  </context-param>

  <listener> 
    <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
  </listener>

</web-app>
SEVERE: Error configuring application listener of class org.jboss.weld.environment.servlet.Listener
java.lang.ClassNotFoundException: org.jboss.weld.environment.servlet.Listener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
    at org.apache.tomee.catalina.LazyStopWebappClassLoader._loadClass(LazyStopWebappClassLoader.java:103)
    at org.apache.tomee.catalina.LazyStopWebappClassLoader.loadClass(LazyStopWebappClassLoader.java:98)
    at org.apache.tomee.catalina.JavaeeInstanceManager.newInstance(JavaeeInstanceManager.java:54)
    at org.apache.tomee.catalina.JavaeeInstanceManager.newInstance(JavaeeInstanceManager.java:48)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4733)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)



是否因为TomEE已经使用了另一个CDI-Framework(OpenWebB)而出现了问题?有可能让TomEE和Weld一起运行吗?

共有1个答案

杨曜瑞
2023-03-14

你绝对可以让TomEE使用Mojarra而不是MyFaces。但是,由于集成CDI实现的复杂性,使用Weld而不是OpenWebBeans是不可能的。

对于使用Mojarra,只需在物理上删除 /lib/myfaces-*.jar 文件,并将Mojarra impl和api jar放在其中。

 类似资料:
  • 我今天在我们的开发项目中遇到了一个问题。我想在TomEE 1.6.0环境中创建Web服务,方法与前面在Glassfish环境中所做的相同。我在这方面遇到了很多问题,所以我想尝试用Sun Metro堆栈(2.3版)替换Apache CXF。 我还没有找到任何关于它的教程,所以我试着自己做一些事情。我的解决方案是删除所有的cxf-*。jar和openejb cxf-*。jar,我已经添加了webser

  • 问题内容: 我创建了一个具有持久性上下文(hibernate为提供程序)的非常简单的应用程序,以从数据库中读取一些值。我在Maven中使用Eclipse。 首先,我得到 并根据此主题 http://openejb.979440.n4.nabble.com/problem-with-hibernate- persistence-provider- td980429.html 我排除了hibernat

  • 我用tomee创建了一个项目,我想使用stomp协议在我的web应用程序和使用ActiveMQ作为MOM的客户端之间交换消息,但当我运行tomee时,会出现以下异常: 线程“ActiveMQ传输服务器线程处理程序中出现异常:stomp://0.0.0.0:61222“java.lang.NoClassDefFoundError:com/thoughtworks/xstream/io/Hierarc

  • 问题内容: 在“学习Python的艰难方法”第21页上,我看到以下代码示例: 为什么用这里代替?您什么时候使用,什么时候使用? 问题答案: 该物体使用符转换,并且将其转换使用。 对于某些对象(例如整数),它们产生相同的结果,但是特殊之处在于(对于可能的类型)它通常返回有效的Python语法的结果,该结果可用于明确地重新创建其表示的对象。 这是一个使用日期的示例: 对于该类型不产生Python语法包

  • 问题内容: 我正在为uni开发一个项目,并且一直在基于的表中使用to上的以下代码: 这在我的测试服务器上运行良好,但是在迁移到大学项目服务器时返回此错误: 一些谷歌搜索建议使用代替,但我不知道如何在表中做到这一点。大多数示例仅显示返回 任何帮助将非常感激 问题答案: 假设您无法使用并且想要一系列设备,则可以执行以下操作: 这将创建一个临时数组并将其每一行中的数据存储在其中,然后将其推入主数组。据我

  • 我有一个MDB,当部署在glassfish上时,它可以使用ActiveMQ咨询消息。 但当我在tomEE上部署此MDB时,它不会消耗任何建议消息。有什么我需要打开的吗? (在TomEE中,我成功地在这些队列上生成和使用了我想要咨询的消息) 编辑:我在一个独立的客户机上测试了这些咨询主题之一,得到了预期的信息。因此,成功地发送了建议消息,只是我的mdb没有正确地接收它们。