JAvaがJAX-WSを使用してwebserviceを書く場合Unable to create JAXBContext

3484 ワード

webserviceは、web開発者として身につけなければならない技術の一つであり、そのメリットはここではあまり言わないが、MyEclipseにはwebserviceを生成する方法が付属しており、JAX-WSを使用しているが、私が間違っていなければjavaEE 5.0、JDK 1.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.(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、カスタムオブジェクトなどどちらも問題ありませんが、インタフェースを処理できないだけなので、メソッドのパラメータや戻り値にインタフェースがなければいいのです.