weblogic下用@Resource出现No unique bean of type [cn.xx.dao.QueryDAO] is defined的解决办法 原创 2014年06月04日 16:1

本文介绍了解决在WebLogic环境下使用@Resource注解时出现的NoSuchBeanDefinitionException异常的方法。提供了两种解决方案:一是使用@Autowired和@Qualifier组合;二是通过修改weblogic.xml配置文件来指定优先加载应用级别的包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

原创  2014年06月04日 16:16:27

最近在使用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的完整代码为:

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <wls:weblogic-web-app  
  3. xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"  
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  6. http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd  
  7. http://xmlns.oracle.com/weblogic/weblogic-web-app  
  8. http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">  
  9.   
  10.      <wls:container-descriptor>  
  11.          <wls:prefer-application-packages>  
  12.              <wls:package-name>com.google.common.*</wls:package-name>  
  13.              <wls:package-name>javax.jws.soap.*</wls:package-name>  
  14.              <wls:package-name>javax.xml.ws.*</wls:package-name>  
  15.              <wls:package-name>javax.annotation.*</wls:package-name>  
  16.          </wls:prefer-application-packages>  
  17.      </wls:container-descriptor>  
  18.      <wls:resource-env-description>  
  19.          <wls:resource-env-ref-name>queryDAO</wls:resource-env-ref-name>  
  20.          <wls:jndi-name>dataSource</wls:jndi-name>  
  21.      </wls:resource-env-description>  
  22.      <wls:resource-env-description>  
  23.          <wls:resource-env-ref-name>updateDAO</wls:resource-env-ref-name>  
  24.          <wls:jndi-name>dataSource</wls:jndi-name>  
  25.      </wls:resource-env-description>  
  26. </wls:weblogic-web-app>  
关键代码为 <wls:package-name>javax.annotation.*</wls:package-name>

版权声明:本文为博主原创文章,未经博主允许不得转载。
 
u013034793
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值