问题解决
在开发过程中,可能会遇到以下问题:
1.错误信息:
javax.xml.ws.WebServiceException: Failed to access the WSDL at: http://localhost:8080/StockQuoteWS/StockQuoteService?WSDL. It failed with: Connection refused: connect. at Connection refused: connect. at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:136) at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:122) at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:226) ...... |
原因及解决方法:
Web服务需要部署在服务器上,上面的错误信息往往是因为没有启动应用服务器。在NetBeans "运行环境"tab中,"服务器"->"Sun Application Server 9" -> 启动。
2. 错误信息
java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/C:/Java/netbeans-5.5.1/ide7/modules/ext/jaxws21/jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/) at com.sun.xml.bind.v2.model.impl.ModelBuilder.<clinit>(ModelBuilder.java:136) at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:406) at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:270) ...... |
原因及解决方法:
这种错误通常发生在Java SE 6(JDK 6)平台上,因为Java SE 6(JDK 6)缺省自带的是 JAXB 2.0 和 JAX-WS 2.0.最简单的办法是把NetBeans 5.5.1 中自带的JAXB 2.1 和 JAX-WS 2.1 拷贝到Java SE 6(JDK 6)平台中去.具体做法如下,在Java 平台的JRE的lib目录下建立endorsed目录,比如"C:\Java\jdk1.6.0\jre\lib\endorsed",然后在NetBeans 5.5.1 中找到jaxb-api.jar和jaxws-api.jar两个文件,比如在目录"C:\Java\netbeans-5.5.1\ide7\modules\ext\jaxws21\api"下.
把这两个jar文件从NetBeans 5.5.1中拷贝到 C:\Java\jdk1.6.0\jre\lib\endorsed 中.