java使用JAX-WS來寫webservice時 Unable to create JAXBContext

webservice,作爲web開發人員來說必須掌握的一門技術,它的好處這裏就不多說了,MyEclipse中自帶了一種生成webservice的方法,使用JAX-WS,如果我沒有弄錯的話,它需要javaEE5.0、JDK1.5以上,瞭解完這些就開始寫接口方法。各種隨心所欲。不料在用MyEclipse生成webservice時出現錯誤了,生成不了,錯誤信息如下“ An internal error occurred during: "Generating JAX-WS Web Services". Unable to create JAXBContext ”  ,錯誤堆棧如下:
javax.xml.ws.WebServiceException: Unable to create JAXBContext
	at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:158)
	at com.sun.xml.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:87)
	at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:262)
	at com.sun.tools.ws.wscompile.WsgenTool.buildModel(WsgenTool.java:225)
	at com.sun.tools.ws.wscompile.WsgenTool.run(WsgenTool.java:124)
	at com.genuitec.eclipse.ws.jaxws.JaxWSBUJob.wsGen(JaxWSBUJob.java:224)
	at com.genuitec.eclipse.ws.jaxws.JaxWSBUJob.run(JaxWSBUJob.java:124)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.security.PrivilegedActionException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
java.sql.ResultSet is an interface, and JAXB can't handle interfaces.
	this problem is related to the following location:
		at java.sql.ResultSet
		at private java.sql.ResultSet com.bjjdsy.service.jaxws.TestABCResponse._return
		at com.bjjdsy.service.jaxws.TestABCResponse
java.sql.ResultSet does not have a no-arg default constructor.
	this problem is related to the following location:
		at java.sql.ResultSet
		at private java.sql.ResultSet com.bjjdsy.service.jaxws.TestABCResponse._return
		at com.bjjdsy.service.jaxws.TestABCResponse

	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.xml.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:148)
	... 7 more
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
java.sql.ResultSet is an interface, and JAXB can't handle interfaces.
	this problem is related to the following location:
		at java.sql.ResultSet
		at private java.sql.ResultSet com.bjjdsy.service.jaxws.TestABCResponse._return
		at com.bjjdsy.service.jaxws.TestABCResponse
java.sql.ResultSet does not have a no-arg default constructor.
	this problem is related to the following location:
		at java.sql.ResultSet
		at private java.sql.ResultSet com.bjjdsy.service.jaxws.TestABCResponse._return
		at com.bjjdsy.service.jaxws.TestABCResponse

	at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:102)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:438)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:286)
	at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139)
	at com.sun.xml.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:105)
	at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:153)
	at com.sun.xml.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:149)
	... 9 more
真心讓人鬱悶,尤其是剛開始搞webservice的時候。其實仔細閱讀一下堆棧信息就會發現,說 ResultSet是一個接口,而JAXB不能處理接口。記得網上有人說 JAX-WS只支持基本數據類型,int、String等,其實不是的,JAX支持的數據類型很多,List、HashMap、自定義對象等等都沒問題,只是不能處理接口,那就在方法的參數和返回值上不要有接口就好了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章