Jakarta ee 从JSF项目调用EJB
我有两个项目,一个是EJB,另一个是JSF项目。我想从JSF控制器调用EJB。我能够在JBoss7.1服务器上部署EJB,但不能从JSF控制器调用(部署)本地EJB。代码和错误如下所示 下面是部署在JBoss7.1服务器上的EJB代码Jakarta ee 从JSF项目调用EJB,jakarta-ee,jsf-2,jboss7.x,ejb-3.0,Jakarta Ee,Jsf 2,Jboss7.x,Ejb 3.0,我有两个项目,一个是EJB,另一个是JSF项目。我想从JSF控制器调用EJB。我能够在JBoss7.1服务器上部署EJB,但不能从JSF控制器调用(部署)本地EJB。代码和错误如下所示 下面是部署在JBoss7.1服务器上的EJB代码 package com.store.ejb; import java.sql.Date; import java.util.Hashtable; import java.util.List; import javax.ejb.Stateless; i
package com.store.ejb;
import java.sql.Date;
import java.util.Hashtable;
import java.util.List;
import javax.ejb.Stateless;
import org.jboss.annotation.ejb.LocalBinding;
import com.store.dao.OrderDAO;
import com.store.dao.OrderDAOInterface;
import com.store.entities.Order;
/**
* Session Bean implementation class OrderBean
*/
@Stateless
@LocalBinding (jndiBinding="StoreEJB/OrderBeanLocal")
public class OrderBean implements OrderBeanLocal {
/**
* Default constructor.
*/
public OrderBean() {
// TODO Auto-generated constructor stub
}
@Override
public void addOrder(float orderPrice, Date orderDate, int customerId,
Hashtable<Integer, Integer> product) {
// TODO Auto-generated method stub
}
@Override
public List<Order> getOrders() {
OrderDAOInterface orderDao = new OrderDAO();
return orderDao.getOrderList();
}
@Override
public void editOrder(Date orderDate) {
// TODO Auto-generated method stub
}
@Override
public void deleteOrder(int orderId) {
// TODO Auto-generated method stub
}
}
下面是JSF控制器的代码——我试图从这里访问/调用EJB
@ManagedBean
@RequestScoped
public class OrderController {
private String orderId;
private Date orderDate;
private String orderPrice;
private String customerId;
//@EJB(name="java:global/StoreEJB/OrderBean")
private OrderBeanLocal bean;
private List<Order> allOrders;
public OrderController() throws NamingException{
Context jndiContext = getInitialContext();
bean = (OrderBeanLocal) jndiContext.lookup("java:global/StoreEJB/OrderBean");
}
public static Context getInitialContext( ) throws javax.naming.NamingException {
return EJBContainer.createEJBContainer().getContext();
}
// getters setters
@ManagedBean
@请求范围
公共类OrderController{
私有字符串orderId;
私有日期orderDate;
私有字符串订单价格;
私有字符串customerId;
//@EJB(name=“java:global/StoreEJB/OrderBean”)
私有订单bean本地bean;
私人名单分配;
public OrderController()引发NamingException{
Context jndiContext=getInitialContext();
bean=(OrderBeanLocal)jndiContext.lookup(“java:global/StoreEJB/OrderBean”);
}
公共静态上下文getInitialContext()抛出javax.naming.NamingException{
返回EJBContainer.createEJBContainer().getContext();
}
//吸气剂二传手
我的web.xml是
<?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>com.aislab.accesscontrol.core.ui-2</display-name>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>afterwork</param-value>
</context-param>
<welcome-file-list>
<welcome-file>faces/orders.xhtml</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>
</web-app>
com.aislab.accesscontrol.core.ui-2
主题
下班
faces/orders.xhtml
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
/面孔/*
信息:EJB项目添加到JSF_项目->属性->JavaBuildPath->项目中
因此,当我运行JSF_项目时,它会给出以下异常/错误
22:52:28,377 INFO [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) JBAS015003: Found StoreJSF.war in deployment directory. To trigger deployment create a file called StoreJSF.war.dodeploy
22:52:28,383 INFO [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015876: Starting deployment of "StoreJSF.war"
22:52:31,135 WARN [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015893: Encountered invalid class name 'com.sun.faces.vendor.Tomcat6InjectionProvider:org.apache.catalina.util.DefaultAnnotationProcessor' for service type 'com.sun.faces.spi.injectionprovider'
22:52:31,137 WARN [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015893: Encountered invalid class name 'com.sun.faces.vendor.Jetty6InjectionProvider:org.mortbay.jetty.plus.annotation.InjectionCollection' for service type 'com.sun.faces.spi.injectionprovider'
22:52:33,581 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC00001: Failed to start service jboss.deployment.unit."StoreJSF.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."StoreJSF.war".POST_MODULE: Failed to process phase POST_MODULE of deployment "StoreJSF.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0]
at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0]
Caused by: java.lang.RuntimeException: Error getting reflective information for class com.store.controllers.OrderController with ClassLoader ModuleClassLoader for Module "deployment.StoreJSF.war:main" from Service Module Loader
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58)
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:85)
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:70)
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:55)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
... 5 more
Caused by: java.lang.NoClassDefFoundError: Lcom/store/ejb/OrderBeanLocal;
at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.7.0]
at java.lang.Class.privateGetDeclaredFields(Unknown Source) [rt.jar:1.7.0]
at java.lang.Class.getDeclaredFields(Unknown Source) [rt.jar:1.7.0]
at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:57) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
... 10 more
Caused by: java.lang.ClassNotFoundException: com.store.ejb.OrderBeanLocal from [Module "deployment.StoreJSF.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
... 15 more
22:52:33,608 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "StoreJSF.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"StoreJSF.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"StoreJSF.war\".POST_MODULE: Failed to process phase POST_MODULE of deployment \"StoreJSF.war\""}}
22:52:33,664 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment StoreJSF.war in 55ms
22:52:33,666 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
JBAS014777: Services which failed to start: service jboss.deployment.unit."StoreJSF.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."StoreJSF.war".POST_MODULE: Failed to process phase POST_MODULE of deployment "StoreJSF.war"
22:52:33,668 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"StoreJSF.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"StoreJSF.war\".POST_MODULE: Failed to process phase POST_MODULE of deployment \"StoreJSF.war\""}}}}
22:52:28377 INFO[org.jboss.as.server.deployment.scanner](DeploymentScanner threads-1)JBAS015003:在部署目录中找到StoreJSF.war。要触发部署,请创建一个名为StoreJSF.war.dodeploy的文件
22:52:28383信息[org.jboss.as.server.deployment](MSC服务线程1-8)JBAS015876:开始部署“StoreJSF.war”
22:52:31135警告[org.jboss.as.server.deployment](MSC服务线程1-5)JBAS015893:遇到服务类型“com.sun.faces.vendor.Tomcat6InjectionProvider:org.apache.catalina.util.DefaultAnnotationProcessor”的无效类名“com.sun.faces.spi.injectionprovider”
22:52:31137警告[org.jboss.as.server.deployment](MSC服务线程1-5)JBAS015893:遇到服务类型“com.sun.faces.vendor.Jetty6InjectionProvider:org.mortbay.jetty.plus.annotation.InjectionCollection”的无效类名“com.sun.faces.spi.injectionprovider”
22:52:33581错误[org.jboss.msc.service.fail](msc服务线程1-1)MSC00001:无法启动服务jboss.deployment.unit.“StoreJSF.war”。POST_模块:org.jboss.msc.service.StartException in service jboss.deployment.unit.“StoreJSF.war”。POST_模块:无法处理部署“StoreJSF.war”的阶段POST_模块
在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
在org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
在org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)[rt.jar:1.7.0]
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)[rt.jar:1.7.0]
运行(未知源)[rt.jar:1.7.0]
原因:java.lang.RuntimeException:从服务模块加载器获取类com.store.controllers.OrderController的反射信息时出错,其中类加载器ModuleClassLoader用于模块“deployment.StoreJSF.war:main”
位于org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
位于org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58)
位于org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:85)
位于org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:70)
位于org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:55)
在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
…还有5个
原因:java.lang.NoClassDefFoundError:Lcom/store/ejb/OrderBeanLocal;
位于java.lang.Class.getDeclaredFields0(本机方法)[rt.jar:1.7.0]
位于java.lang.Class.privateGetDeclaredFields(未知源)[rt.jar:1.7.0]
位于java.lang.Class.getDeclaredFields(未知源)[rt.jar:1.7.0]
位于org.jboss.as.server.deployment.reflect.ClassReflectionIndex.(ClassReflectionIndex.java:57)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
位于org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
…还有10个
原因:java.lang.ClassNotFoundException:com.store.ejb.OrderBeanLocal,来自服务模块加载器的[Module“deployment.StoreJSF.war:main]
位于org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
位于org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
位于org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
位于org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
位于org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
…还有15个
22:52:33608信息[org.jboss.as.server](DeploymentScanner threads-2)JBAS015870:部署“StoreJSF.war”被回滚,返回失败消息{“JBAS014671:Failed services”=>{“jboss.deployment.unit.\“StoreJSF.war\”。发布模块“=>”org.jboss.msc.service.StartException在服务jboss中
22:52:28,377 INFO [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) JBAS015003: Found StoreJSF.war in deployment directory. To trigger deployment create a file called StoreJSF.war.dodeploy
22:52:28,383 INFO [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015876: Starting deployment of "StoreJSF.war"
22:52:31,135 WARN [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015893: Encountered invalid class name 'com.sun.faces.vendor.Tomcat6InjectionProvider:org.apache.catalina.util.DefaultAnnotationProcessor' for service type 'com.sun.faces.spi.injectionprovider'
22:52:31,137 WARN [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015893: Encountered invalid class name 'com.sun.faces.vendor.Jetty6InjectionProvider:org.mortbay.jetty.plus.annotation.InjectionCollection' for service type 'com.sun.faces.spi.injectionprovider'
22:52:33,581 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC00001: Failed to start service jboss.deployment.unit."StoreJSF.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."StoreJSF.war".POST_MODULE: Failed to process phase POST_MODULE of deployment "StoreJSF.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0]
at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0]
Caused by: java.lang.RuntimeException: Error getting reflective information for class com.store.controllers.OrderController with ClassLoader ModuleClassLoader for Module "deployment.StoreJSF.war:main" from Service Module Loader
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58)
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:85)
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:70)
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:55)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
... 5 more
Caused by: java.lang.NoClassDefFoundError: Lcom/store/ejb/OrderBeanLocal;
at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.7.0]
at java.lang.Class.privateGetDeclaredFields(Unknown Source) [rt.jar:1.7.0]
at java.lang.Class.getDeclaredFields(Unknown Source) [rt.jar:1.7.0]
at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:57) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
... 10 more
Caused by: java.lang.ClassNotFoundException: com.store.ejb.OrderBeanLocal from [Module "deployment.StoreJSF.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
... 15 more
22:52:33,608 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "StoreJSF.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"StoreJSF.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"StoreJSF.war\".POST_MODULE: Failed to process phase POST_MODULE of deployment \"StoreJSF.war\""}}
22:52:33,664 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment StoreJSF.war in 55ms
22:52:33,666 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
JBAS014777: Services which failed to start: service jboss.deployment.unit."StoreJSF.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."StoreJSF.war".POST_MODULE: Failed to process phase POST_MODULE of deployment "StoreJSF.war"
22:52:33,668 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"StoreJSF.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"StoreJSF.war\".POST_MODULE: Failed to process phase POST_MODULE of deployment \"StoreJSF.war\""}}}}