Java 如何将动态项目与springframework和EJB项目结合使用
Java 如何将动态项目与springframework和EJB项目结合使用,java,eclipse,spring-mvc,jakarta-ee,ejb-3.2,Java,Eclipse,Spring Mvc,Jakarta Ee,Ejb 3.2,我试图在eclipse中创建一个带有springframework 4.1.6的动态项目(版本3.1)和一个EJB项目(版本EJB3.2)。 但是,当我尝试集成项目时,出现了一些错误。 让我告诉你我正在尝试做什么,也许你可以帮我解决这个配置。少了什么?(最后有一个错误跟踪) Dymanic项目的我的文件: index.jsp <a href="teste.do/TesteMetodo">link</a> 我导入了此库: -\WebContent\WEB-INF\li
我试图在eclipse中创建一个带有springframework 4.1.6的动态项目(版本3.1)和一个EJB项目(版本EJB3.2)。
但是,当我尝试集成项目时,出现了一些错误。
让我告诉你我正在尝试做什么,也许你可以帮我解决这个配置。少了什么?(最后有一个错误跟踪)
Dymanic项目的我的文件:
index.jsp
<a href="teste.do/TesteMetodo">link</a>
我导入了此库:
-\WebContent\WEB-INF\lib\commons-logging-1.2.jar
-\WebContent\WEB-INF\lib\spring-aop-4.1.6.RELEASE.jar
-\WebContent\WEB-INF\lib\spring-beans-4.1.6.RELEASE.jar
-\WebContent\WEB-INF\lib\spring-context-4.1.6.RELEASE.jar
-\WebContent\WEB-INF\lib\spring-core-4.1.6.RELEASE.jar
-\WebContent\WEB-INF\lib\spring-expression-4.1.6.RELEASE.jar
-\WebContent\WEB-INF\lib\spring-WEB-4.1.6.RELEASE.jar
-\WebContent\WEB-INF\lib\spring-webmvc-4.1.6.RELEASE.jar
我的EJB项目文件:
testeacade.java
package com.denis.teste;
import javax.ejb.EJB;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.denis.facade.TesteFacade;
@Controller
@RequestMapping("teste.do")
public class TesteController {
@EJB
private TesteFacade testeFacade;
@RequestMapping("TesteMetodo")
public String TesteMetodo(HttpServletRequest httpServletRequest) {
httpServletRequest.getParameter("casa");
System.out.println("entrou no metodo");
testeFacade.facadeMethod();
return "index2";
}
}
package com.denis.facade;
import javax.ejb.Remote;
@Remote
public interface TesteFacade {
public void facadeMethod();
}
package com.denis.facade;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import com.denis.repository.TesteRepository;
@Stateless
public class TesteFacadeImpl implements TesteFacade {
@EJB
private TesteRepository testeRepository;
@Override
public void facadeMethod() {
testeRepository.find(1l);
System.out.println("facade method");
}
}
package com.denis.repository;
import javax.ejb.Remote;
import com.denis.model.Usuario;
@Remote
public interface TesteRepository {
public Usuario find(Long id);
}
package com.denis.repository;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.denis.model.Usuario;
@Stateless
public class TesteRepositoryImpl implements TesteRepository {
@PersistenceContext
private EntityManager entityManager;
public Usuario find(Long id) {
return id == null ? entityManager.find(Usuario.class, id) : null;
}
}
package com.denis.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "usuarios")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "NOME")
private String nome;
}
TesteFacadeImpl.java
package com.denis.teste;
import javax.ejb.EJB;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.denis.facade.TesteFacade;
@Controller
@RequestMapping("teste.do")
public class TesteController {
@EJB
private TesteFacade testeFacade;
@RequestMapping("TesteMetodo")
public String TesteMetodo(HttpServletRequest httpServletRequest) {
httpServletRequest.getParameter("casa");
System.out.println("entrou no metodo");
testeFacade.facadeMethod();
return "index2";
}
}
package com.denis.facade;
import javax.ejb.Remote;
@Remote
public interface TesteFacade {
public void facadeMethod();
}
package com.denis.facade;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import com.denis.repository.TesteRepository;
@Stateless
public class TesteFacadeImpl implements TesteFacade {
@EJB
private TesteRepository testeRepository;
@Override
public void facadeMethod() {
testeRepository.find(1l);
System.out.println("facade method");
}
}
package com.denis.repository;
import javax.ejb.Remote;
import com.denis.model.Usuario;
@Remote
public interface TesteRepository {
public Usuario find(Long id);
}
package com.denis.repository;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.denis.model.Usuario;
@Stateless
public class TesteRepositoryImpl implements TesteRepository {
@PersistenceContext
private EntityManager entityManager;
public Usuario find(Long id) {
return id == null ? entityManager.find(Usuario.class, id) : null;
}
}
package com.denis.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "usuarios")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "NOME")
private String nome;
}
TesteRepository.java
package com.denis.teste;
import javax.ejb.EJB;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.denis.facade.TesteFacade;
@Controller
@RequestMapping("teste.do")
public class TesteController {
@EJB
private TesteFacade testeFacade;
@RequestMapping("TesteMetodo")
public String TesteMetodo(HttpServletRequest httpServletRequest) {
httpServletRequest.getParameter("casa");
System.out.println("entrou no metodo");
testeFacade.facadeMethod();
return "index2";
}
}
package com.denis.facade;
import javax.ejb.Remote;
@Remote
public interface TesteFacade {
public void facadeMethod();
}
package com.denis.facade;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import com.denis.repository.TesteRepository;
@Stateless
public class TesteFacadeImpl implements TesteFacade {
@EJB
private TesteRepository testeRepository;
@Override
public void facadeMethod() {
testeRepository.find(1l);
System.out.println("facade method");
}
}
package com.denis.repository;
import javax.ejb.Remote;
import com.denis.model.Usuario;
@Remote
public interface TesteRepository {
public Usuario find(Long id);
}
package com.denis.repository;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.denis.model.Usuario;
@Stateless
public class TesteRepositoryImpl implements TesteRepository {
@PersistenceContext
private EntityManager entityManager;
public Usuario find(Long id) {
return id == null ? entityManager.find(Usuario.class, id) : null;
}
}
package com.denis.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "usuarios")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "NOME")
private String nome;
}
TesteRepositoryImpl.java
package com.denis.teste;
import javax.ejb.EJB;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.denis.facade.TesteFacade;
@Controller
@RequestMapping("teste.do")
public class TesteController {
@EJB
private TesteFacade testeFacade;
@RequestMapping("TesteMetodo")
public String TesteMetodo(HttpServletRequest httpServletRequest) {
httpServletRequest.getParameter("casa");
System.out.println("entrou no metodo");
testeFacade.facadeMethod();
return "index2";
}
}
package com.denis.facade;
import javax.ejb.Remote;
@Remote
public interface TesteFacade {
public void facadeMethod();
}
package com.denis.facade;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import com.denis.repository.TesteRepository;
@Stateless
public class TesteFacadeImpl implements TesteFacade {
@EJB
private TesteRepository testeRepository;
@Override
public void facadeMethod() {
testeRepository.find(1l);
System.out.println("facade method");
}
}
package com.denis.repository;
import javax.ejb.Remote;
import com.denis.model.Usuario;
@Remote
public interface TesteRepository {
public Usuario find(Long id);
}
package com.denis.repository;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.denis.model.Usuario;
@Stateless
public class TesteRepositoryImpl implements TesteRepository {
@PersistenceContext
private EntityManager entityManager;
public Usuario find(Long id) {
return id == null ? entityManager.find(Usuario.class, id) : null;
}
}
package com.denis.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "usuarios")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "NOME")
private String nome;
}
实体Usuario.java
package com.denis.teste;
import javax.ejb.EJB;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.denis.facade.TesteFacade;
@Controller
@RequestMapping("teste.do")
public class TesteController {
@EJB
private TesteFacade testeFacade;
@RequestMapping("TesteMetodo")
public String TesteMetodo(HttpServletRequest httpServletRequest) {
httpServletRequest.getParameter("casa");
System.out.println("entrou no metodo");
testeFacade.facadeMethod();
return "index2";
}
}
package com.denis.facade;
import javax.ejb.Remote;
@Remote
public interface TesteFacade {
public void facadeMethod();
}
package com.denis.facade;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import com.denis.repository.TesteRepository;
@Stateless
public class TesteFacadeImpl implements TesteFacade {
@EJB
private TesteRepository testeRepository;
@Override
public void facadeMethod() {
testeRepository.find(1l);
System.out.println("facade method");
}
}
package com.denis.repository;
import javax.ejb.Remote;
import com.denis.model.Usuario;
@Remote
public interface TesteRepository {
public Usuario find(Long id);
}
package com.denis.repository;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.denis.model.Usuario;
@Stateless
public class TesteRepositoryImpl implements TesteRepository {
@PersistenceContext
private EntityManager entityManager;
public Usuario find(Long id) {
return id == null ? entityManager.find(Usuario.class, id) : null;
}
}
package com.denis.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "usuarios")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "NOME")
private String nome;
}
我有一个企业应用程序项目来创建ear文件。
尝试启动服务器WildFly 8时出现错误跟踪:
16:52:59,046 WARN [org.springframework.web.context.support.XmlWebApplicationContext] (MSC service thread 1-5) Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testeController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.denis.facade.TesteFacade] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.ejb.EJB(name=, lookup=, description=, beanName=, beanInterface=class java.lang.Object, mappedName=)}
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:308) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at javax.servlet.GenericServlet.init(GenericServlet.java:244) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:79)
at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:220) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:125) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:508) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:88)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.start(UndertowDeploymentService.java:72)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_45]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_45]
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.denis.facade.TesteFacade] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.ejb.EJB(name=, lookup=, description=, beanName=, beanInterface=class java.lang.Object, mappedName=)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:457) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:435) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$EjbRefElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:700) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:305) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
... 30 more
16:52:59,049 ERROR [org.springframework.web.servlet.DispatcherServlet] (MSC service thread 1-5) Context initialization failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testeController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.denis.facade.TesteFacade] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.ejb.EJB(name=, lookup=, description=, beanName=, beanInterface=class java.lang.Object, mappedName=)}
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:308) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at javax.servlet.GenericServlet.init(GenericServlet.java:244) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:79)
at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:220) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:125) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:508) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:88)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.start(UndertowDeploymentService.java:72)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_45]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_45]
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.denis.facade.TesteFacade] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.ejb.EJB(name=, lookup=, description=, beanName=, beanInterface=class java.lang.Object, mappedName=)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:457) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:435) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$EjbRefElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:700) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:305) [spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
... 30 more
在spring-context.xml中
<bean id="testeFacade" class="org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean">
<property name="jndiName" value="ejb/myBean"/>
<property name="businessInterface" value="com.denis.repository.TesteRepository"/>
</bean>
}谢谢!您知道是否可以创建通用EJB注入吗?想象一下,当这个项目变得更大时,我将拥有很多类,使用这个解决方案,我将在spring-context.xml中获得许多bean标记。