(六)Java Ee平台上实现Web服务及多种客户端实例-小结
问题解决
在开发过程中,可能会遇到以下问题:
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. (ModelBuilder.java:136) at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:406) at com.sun.xml.bind.v2.runtime.JAXBContextImpl. (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 中.
Java Ee平台上实现Web服务及多种客户端实例结构图
结构图可以更清楚地了解前面实例中各个部件之间的关系。
JAVA EE 5平台上实现Web服务实例(模拟股票行情机)用蓝色表示。
瘦客户端(thin client)用黄色表示
胖客户端(rich client)用绿色表示
移动客户端(mobile client)用红色表示
参考:
http://uddi.org/
http://www.w3.org/TR/ws-arch/
http://zh.wikipedia.org/
http://www.netbeans.org/
http://www.java.net/
作者简介:
李力目前在Sun Microsystems任高级软件工程师,有近十年软件开发经验,曾就职于AIG,CA等公司,任软件工程师及系统分析员等职位,在J2EE领域有丰富的实际开发经验。