如何用NetBeans 7构建Java Web服务?(下)

日期: 2011-05-26 作者:Cameron McKenzie翻译:刘志超 来源:TechTarget中国 英文

在《如何用NetBeans 7构建Java Web服务?(上)》中,我们为您介绍了如何安装以及创建一个应用,下面将继续这部分内容。   每当测试新技术时,我总是喜欢使用美好而又古老的“剪刀-石头-布”场景测试。在这种情况下,我会建立Web服务,用一个字符串作为参数,Web服务会告诉用户,他们赢了、输了、或者平了。填写要调用的Web服务的名字RPService,在NetBeans中选择“从Scratch中建立服务”选项:   当你完成这个向导,一个基本的hello world类型方法供你阅读,它看起来无伤大雅,假设这个工具为我生成了它,那么它应该是可以工作的,所以,我要保留它,以后测试新的web……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

《如何用NetBeans 7构建Java Web服务?(上)》中,我们为您介绍了如何安装以及创建一个应用,下面将继续这部分内容。

  每当测试新技术时,我总是喜欢使用美好而又古老的“剪刀-石头-布”场景测试。在这种情况下,我会建立Web服务,用一个字符串作为参数,Web服务会告诉用户,他们赢了、输了、或者平了。填写要调用的Web服务的名字RPService,在NetBeans中选择“从Scratch中建立服务”选项:

从Scratch中建立服务

  当你完成这个向导,一个基本的hello world类型方法供你阅读,它看起来无伤大雅,假设这个工具为我生成了它,那么它应该是可以工作的,所以,我要保留它,以后测试新的web服务的时候,会用到它。

以下是引用片段:
/** This is a sample Web service operation */
    @WebMethod(operationName = "hello")
    public String hello(@WebParam(name = "name") String txt) {
        return "Hello " + txt + " !";
    }

  我想添加一个新方法,可以使用在所有的“剪刀-石头-布”应用上。实际上,我需要一个服务,当输入一个字符串“石头”、“剪刀”、“布”时,可以给出一个“赢”、“输” 或者“平”的结果,甚至是失败,并返回到调用程序。这意味着添加一个新方法到Web服务。

  我想添加一些不同的方法到NetBeans生成的Web服务,但是,我想我不能在那些WSDL或者其他文件中建立正确的条目。要在Web服务中添加正确的新方法,最好的方法是使用“添加操作向导”,在索引菜单上,右击要修改的Web服务:

右击要修改的Web服务

  调用“添加操作向导”后,你要提供方法的名字、返回类型和一些方法中所需的参数。

提供方法的名字、返回类型和一些方法中所需的参数

  完成这个向导后,会在Web服务中添加一个基本的方法,但是,实际的代码还要你自己去写:

以下是引用片段:
@WebMethod(operationName = "playTheGame")
    public String playTheGame(@WebParam(name = "clientChoice")
    String clientChoice) {
        //TODO write your implementation code here:
        return null;
    }

  要改善并更新playTheGame方法所需的逻辑,才能玩这个简单的“剪刀-石头-布”游戏。请注意,为了简单起见,服务端总是会出石头。

以下是引用片段:
    @WebMethod(operationName = "playTheGame")
    public String playTheGame(@WebParam(name = "clientChoice") String clientChoice) {
        String result = "failure";
        String serverChoice = "rock";
        try {
            if (clientChoice.equalsIgnoreCase("scissors")) {
                result = "loss";
            }
            if (clientChoice.equalsIgnoreCase("paper")) {
                result = "win";
            }
            if (clientChoice.equalsIgnoreCase("rock")) {
                result = "draw";
            }
        } catch (RuntimeException e) {
            System.out.println("Excetion");
        }
        return result;
    }

  基本的Web服务已经创建。然而,问题是“如何让它工作?” 测试点在哪。

  因为Web服务是EJB的模块,理论上应该首先部署EJB模块。右击即可。

首先部署EJB模块

  随着在NetBeans控制台窗口出现“构建成功”的消息出现后,我只需右击Web服务,并选择“测试Web服务。”

测试Web服务

  几秒后,新的Chrome浏览器窗口弹出,问我要测试哪个Web服务,有两个方法,一是工具默认为我们生成的那个简单的方法,二是我们自己编写的playTheGame方法。

我们自己编写的playTheGame方法

  开始玩这个游戏,输入“布”,并得到期望的结果,我们“赢”,服务端“输”。这是测试引擎在浏览器中响应的格式:

测试引擎在浏览器中响应的格式

  令人感兴趣的是,SOAP请求和响应包在视觉上给我们呈现了结果,并让我们知道在Web服务整合中发现了什么事情。

  SOAP请求

以下是引用片段:
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope >
    <S:Header/>
    <S:Body>
        <ns2:playTheGame >
            <clientChoice>Paper</clientChoice>
        </ns2:playTheGame>
    </S:Body>
</S:Envelope>
SOAP Response-

  SOAP响应

以下是引用片段:
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope >
    <S:Body>
        <ns2:playTheGameResponse >
            <return>win</return>
        </ns2:playTheGameResponse>
    </S:Body>
</S:Envelope>

  就是这样。在下一代NetBeans V7上创建并测试Web服务是多么的简单!

相关推荐