GWT + Spring : javax.naming.NameNotFoundException: Name userDao is not bound in this Context

1 )开发一个CRM项目, SmartGwt + Hibernate + Spring

 

JDK 1.6

GWT1.7.1

SmartGwt 1.3

Hibernate 3.2

Spring 2.5

Tomcat 6.0

 

2) 由于SmartGwt datasource operationType 只有CRUD 4种,由于个人能力有限,未能能通过 Server DMI 自定义方法实现用户登录功能,因此使用GWT RPC 来实现(验证+返回User实例+session 操作)。

 

3)  GWT1.7 使用 HostedMode + Jetty ,容器启动正常,实例运行正常。

 

4) 部署到 Linux + Tomcat 环境下,Tomcat 启动正常,但实例运行抛异常:

 

 

5) 开始以为 Tomcat 有问题,检查无误。

 

6) 查找资料和论坛,没有头绪。

 

7) 根据提示来看,应该是 GWT RPC 实现类 UserServiceRPCServlet 中的 userDao 没有注入。

 

代码如下:

 

初看没错,因为可以在 Jetty 中正常运行。随便改成如下代码:

 

 

再启动 Tomcat ,运行实例,问题解决!!

 

后来再将 @Autowired 换成 @Autowired + @Qualifier("userDao") , 依然正常。

 

不知道原因为何?

 

查找相关资料:

======================================================================

在java代码中可以使用@Autowire或者@Resource注解方式进行装配,这两个注解的区别是:
@Autowire默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可以结合@Qualifier注解一起使用;


@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.

注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖的对象时候,会回退到按照类型装配,但一旦指定了name属性,就只能按照名称装配了.

==========================================================

看不出与我遇到的问题是否有关。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值