您的位置:首页 > 产品设计 > UI/UE

weblogic下用@Resource出现No unique bean of type [cn.xx.dao.QueryDAO] is defined的解决办法

2014-06-04 16:16 786 查看
最近在使用weblogic时,出现各种问题,其中,有一个问题是这样,在某一个类中,通过@Resource注入一个DAO时,在tomcat时,没有问题,但是在weblogic下,就会出现以下错误:

Caused by: com.bea.core.repackaged.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [cn.xx.dao.QueryDAO] is defined: No beans of type cn.xx.dao.QueryDAO; owner=com.bea.core.repackaged.springframework.context.support.GenericApplicationContext@1af4318:
display name [com.bea.core.repackaged.springframework.context.support.GenericApplicationContext@1af4318]; startup date [Wed Jun 04 16:06:59 CST 2014]; parent: com.bea.core.repackaged.springframework.context.support.GenericApplicationContext@11a4ce8

at com.oracle.pitchfork.inject.Jsr250Metadata.getUniqueInstanceOfType(Jsr250Metadata.java:354)

at com.oracle.pitchfork.inject.Jsr250Metadata.resolveByType(Jsr250Metadata.java:348)

at com.oracle.pitchfork.inject.Jsr250Metadata.resolve(Jsr250Metadata.java:278)

at com.oracle.pitchfork.inject.Jsr250Metadata.applyInjections(Jsr250Metadata.java:231)

试了各种方法:

办法1:

将以下代码

@Resource("queryDAO")

public QueryDAO queryDAO;

修改为

@Autowired(required = false)

@Qualifier("queryDAO")

public QueryDAO queryDAO;

办法2:

出现这个问题的根本原因,其实还是因为weblogic加载jar包时,默认加载weblogic自己的jar包,但是其jar包版本过低,所以根本解决办法是:

修改WEB-INF下的weblogic.xml,我的工程的weblogic.xml的完整代码为:

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
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/ejb-jar_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd"> 
<wls:container-descriptor>
<wls:prefer-application-packages>
<wls:package-name>com.google.common.*</wls:package-name>
<wls:package-name>javax.jws.soap.*</wls:package-name>
<wls:package-name>javax.xml.ws.*</wls:package-name>
<wls:package-name>javax.annotation.*</wls:package-name>
</wls:prefer-application-packages>
</wls:container-descriptor>
<wls:resource-env-description>
<wls:resource-env-ref-name>queryDAO</wls:resource-env-ref-name>
<wls:jndi-name>dataSource</wls:jndi-name>
</wls:resource-env-description>
<wls:resource-env-description>
<wls:resource-env-ref-name>updateDAO</wls:resource-env-ref-name>
<wls:jndi-name>dataSource</wls:jndi-name>
</wls:resource-env-description>
</wls:weblogic-web-app>
关键代码为<wls:package-name>javax.annotation.*</wls:package-name>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐