CXFwebService ,注解问题,在启动Tomcat时,后提示org.apache.cxf.common.injection.ResourceInjector visitField
failed to resolve resource tDatacentermiddleMapper服务器端(webservice)的自动装载(注入)并不成功。
求解决方法,下面是代码,服务端代码
你不用上这么多图,我知道了为什么。
你上面是图片,我没法复制,下面我简短写的demo,你照着修改就行了!
解决方法:
<!--发布WebService接口-->
<jaxws:endpoint id="TeacherService" implementor="#teacherService"
implementorClass="com.skyarm.system.service.TeacherServiceImpl" address="/TeacherService"/>
@WebService
@Service("teacherService")
public class TeacherServiceImpl implements TeacherService {
@Resource
private TeacherDao teacherDao;
public CreateStat createTeacher(@WebParam(name = "teacher")TeacherPO teacher) {
return this.teacherDao.createTeacher(teacher);
}
public void setTeacherDao(TeacherDao teacherDao) {
this.teacherDao = teacherDao;
}
}
主要区别是原本jaxws中的implementor属性是直接写实现类的fullClass,
现在改成ref bean的方式,使用@Service注解标记实现类为一个bean,
然后implementor属性用# + bean的名字来指向这个bean即可。
所以你的问题是发布的暴露接口那个类没有使用@Service直接注解标记成一个bean,然后你就直接用 #TestServiceImpl了。
可这样修改:在TestServiceImpl了上面加一个@Service("TestServiceImpl了")。
纯手打,希望您能给分!!!!
哪来的testService,你xml文件别动,在TestServiceImpl了上面加一个@Service("TestServiceImpl")
另外你的xml文件那个定义的 改成下面这样的:
implementorClass=" 你的 TestServiceImpl 类的全路径" address="/TestService"/>
前面还是一样,在TestServiceImpl了上面加一个@Service("TestServiceImpl")。
xml文件中你定义的那个TestServiceImpl bean,把他注释掉,然后你的接口暴露这样写:
<jaxws:endpoint id="TestService" implementor="#TestServiceImpl"
implementorClass="TeacherServiceImpl全路径" address="/TestService"/>
试下。
你的xml里面的注解扫描开了没有:
<!-- 开启扫描注解 -->
<context:component-scan base-package="你的TestServiceImpl类所在的包路径"></context:component-scan>