如何使用Netbeans生成的Webservice

开发 后端
本文将详细介绍如何使用Netbeans生成的Webservice,

用Netbeans生成webservice非常方便,当然,有jdk6环境是***,但有个问题经常困惑我们,就是在测试环境或开发环境中完成的代码要实施部署到其他机器上 时,我们会束手无策,只好一个个去改代码中的目标endpoint地址;有人说用配置文件啊,呵呵,在纯粹手动写的axis或xfire中也许很方便,但在Netbeans中这些自动生成的片段,改起来比较麻烦,虽然开发的时候托托拽拽很方便。以前,我一直就是这么安慰自己,事物都有两面性嘛!最近看到Sun Webservice老大arun gupta的文章,发现其实要改变这个很容易,非常容易,不过还是有问题,下面会详细讲述。

举个例子:

按Arun的说法,我们经常使用的wsdl已生成代码来调用webservice,其中,jax-ws的版本是2.1

  1. Hello port = new HelloService().getHelloPort();   
  2.  
  3. String result = port.sayHello("Duke!");  

当然,上面的描述都是对应特定ip地址发布的webservice,如果将此相同的服务最终部署到其他机器,就不能使用了。所以,我们可以在上面两行之间增加另外一行代码:

  1. ((javax.xml.ws.BindingProvider)port).getRequestContext().put(javax.xml.ws.BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "NEW_ADDRESS_HERE");  

实际使用中直接将NEW_ADDRESS_HERE替换成相应的endpoint地址就行了。

我觉得Arun在测试的时候和我之前是犯了同样的错误,在换了endpoint之后,如果按上面的方法,在原始的app server不关闭的时候是可行的,但这种情况很少发生。在执行“Hello port = new HelloService().getHelloPort();”这句代码时,会先去取原始的wsdl文件,如果原始的app server已关闭,则会报异常,((javax.xml.ws.BindingProvider)port).getRequestContext().put(javax.xml.ws.BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "NEW_ADDRESS_HERE");这句代码就不能再执行了。

经过摸索,我找到了一个好的方法,具体如下:

首先,要定义新的endpoint的URL:URL endpoint_new = new URL("NEW_ADDRESS_HERE");

再定义一个QName: QName qname = new QName("http://"+"ORIGINAL_PACKAGE","SERVICE_NAME");

其中NEW_ADDRESS_HERE就是新的endpoint地址,ORIGINAL_PACKAGE就是产生的webservice的包,SERVICE_NAME是发布的service名称,试一下就知道,如果填错了,会提示你哪些是有效的写法。

***,Hello port = new HelloService().getHelloPort();这句要替换掉,改成Hello port = new HelloService(endpoint_new,qname).getHelloPort();

我在jax-ws官网又找到一篇文章:https://jax-ws.dev.java.net/guide/How_to_invoke_and_endpoint_by_overriding_endpoint_address_in_the_WSDL.html。它把上面两种情况都包括进去了,只是没怎么具体说明,让人有点摸不着头脑。

【编辑推荐】

  1. Netbeans 6.0模块快速入门教程
  2. Netbeans 6.0发布,支持Ruby、移动开发和集成的剖析器
  3. Netbeans 6.0预览版发布 Sun再引惊呼
  4. Netbeans成为Ruby开发者的新伙伴(3)
  5. 八大技术牛人点评Netbeans 6.5
责任编辑:张燕妮 来源: csdn
相关推荐

2009-08-06 16:44:03

C#创建WebServ

2009-06-12 11:36:42

Netbeans插件DTrace GUI

2009-06-10 14:59:04

Netbeans 6.应用程序

2009-08-13 15:16:00

Eclipse建立We

2009-06-11 10:06:50

NetBeans使用

2009-06-09 13:02:30

NetBeans使用教程

2009-06-11 10:28:47

netbeans 部署

2011-11-29 10:23:47

JSPaxiswebservice

2010-06-09 19:17:46

UML

2009-06-04 15:59:53

Netbeans操作MMySQL数据库

2009-06-15 14:28:00

NetBeansJavafx

2009-06-09 16:01:36

NetBeansIDEjava

2011-06-15 10:27:49

PythonNetBeans

2009-06-11 10:50:27

netbeans配置

2009-06-11 10:02:04

NetBeans设置JavaDoc

2009-06-15 14:37:00

如何安装netbean

2010-09-25 13:34:18

nbandroidNetBeans 6.插件

2023-02-26 10:16:19

JavaPDF文档

2010-05-25 14:54:18

2009-06-05 15:22:28

NetbeansEclipse
点赞
收藏

51CTO技术栈公众号