xfire JAXB
场景:怎么用xfire做一个webService用jaxb2绑定
如何用xfire做一个webService用jaxb2绑定
我是一个SOA新学者,用xfire的jaxb2绑定做了一个例子,总是报错,也不清楚为什么了!
希望大家多给我一点意见,谢谢!
例子如下:
PO类:
Service Interface类:
Service Interface Implement类:
src\META-INF\xfire\services.xml:
web.xml:
报如下错误:
在xfire的官网上看好象还需要一个.xsd,然后再配到services.xml中,我也试了!错误一样!
希望大家可以帮我一下,看看什么问题,给点意见!最好说的具体点,谢谢!
如何用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(); }
Service Interface类:
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 { @WebMethod public User getUser(); @WebMethod public List getUsers(); }
Service Interface Implement类:
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; } }
src\META-INF\xfire\services.xml:
<?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" class="org.codehaus.xfire.jaxb2.JaxbServiceFactory"> <constructor-arg ref="xfire.transportManager"/> </bean> </beans>
web.xml:
<?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 annotation org.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)
在xfire的官网上看好象还需要一个.xsd,然后再配到services.xml中,我也试了!错误一样!
希望大家可以帮我一下,看看什么问题,给点意见!最好说的具体点,谢谢!
1 楼
小笨熊
2008-01-18
哪怕是不成熟的意见也可以呀!大家一起研究下!
2 楼
peigen
2008-01-22
如果使用的是tomcat&jetty&resin请在web-inf同一级目录copy META-INF\xfire\services.xml
如果是weblogic请在web-inf/classes下copy META-INF\xfire\services.xml
如还未解决,请直接联系peigen_peigen @ 163.com
如果是weblogic请在web-inf/classes下copy META-INF\xfire\services.xml
如还未解决,请直接联系peigen_peigen @ 163.com
3 楼
wangpx
2008-05-21
你这个问题解决了吗
我现在用这个也出现问题
我现在用这个也出现问题
4 楼
caroline12
2008-05-22
没有对数据进行初始化赋值吧
5 楼
yangpeihai
2008-06-11
谢谢。。。。你们的意见对我很有用。。。。
6 楼
ghlong
2011-11-24
现在刚学这个,也遇到同样的问题,请问楼主怎么解决……谢过