如何用xfire做一个webService用jaxb2绑定
我是一个SOA新学者,用xfire的jaxb2绑定做了一个例子,总是报错,也不清楚为什么了!
希望大家多给我一点意见,谢谢!
例子如下:
PO类:
package com.xxx.services;import java.io.Serializable;public class User implements Serializable {private String name;private int age;public int getAge() {return age;}......//getter() or setter();}package com.xxx.services;import java.util.List;import javax.jws.WebMethod;import javax.jws.WebService;@WebService(name="UserServiceIntf", targetNamespace="http://www.webservicex.net")public interface UserService {@WebMethodpublic User getUser();@WebMethodpublic List getUsers();}package com.xxx.services;import java.util.List;import java.util.Vector;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;@WebService(endpointInterface="org.codehaus.xfire.jaxb.UserService", serviceName="UserService")@SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)public class UserServiceImpl implements UserService {public User getUser(){User user = new User("tom",23);return user;}public List getUsers(){List list=new Vector();User user1 = new User("tom",23);User user2 = new User("jerry",26);list.add(user1);list.add(user2);return list;}}<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>UserService</name> <namespace>http://com.xxx.services/UserService</namespace> <serviceBean>com.xxx.services.UserServiceImpl</serviceBean><serviceFactory>#jaxbServiceFactory</serviceFactory> </service> <bean name="jaxbServiceFactory" name="code"><?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class> org.codehaus.xfire.transport.http.XFireConfigurableServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/servlet/XFireServlet/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping></web-app>
exception javax.servlet.ServletException: Error initializing XFireServlet.org.codehaus.xfire.transport.http.XFireServlet.init(XFireServlet.java:50)javax.servlet.GenericServlet.init(GenericServlet.java:211)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)java.lang.Thread.run(Thread.java:595)root cause org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.codehaus.xfire.spring.ServiceBean' defined in class path resource [META-INF/xfire/services.xml]: Initialization of bean failed; nested exception is org.codehaus.xfire.annotations.AnnotationException: Class javax.xml.namespace.QName does not have a WebService annotationorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:370)org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:275)org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:320)