在 JDeveloper 10.1.3 预览版中构建简单的 JSF 和 Web 服务应用程序

作者:Chris Schalk,Oracle Corporation

2005 年 2 月


简介


此方法文档演示了从 JavaServer Faces 应用程序调用 Web 服务是如何简单。对于这个示例,我们将构建一个简单的 JSF 应用程序,该应用程序将从输入表单中接受一个股票代号,然后调用股价 Web 服务获取结果,然后该结果将显示在同一页面上。


使用入门


在开始使用之前,请首先确保从 OTN 下载了 JDeveloper 10.1.3 预览版并将它安装到了您的计算机上。


  1. 要开始构建应用程序,我们可以使用 Application Workspace 向导来生成一个新的工作区和一个空项目。(File->New->General->Application..)。或者在任何现有工作区中创建一个项目即可。(您可以将其命名为 JSFStockWS。)

  2. 创建了空项目之后,单击 Connection Navigator 选项卡,然后浏览 UDDI registry。在 Microsoft Public 注册表中,您将看到 Xmethods Delayed Stock Quotes 服务。右键单击该服务,然后选择 Generate Web Service Stub/Skeleton..。这样将生成一个客户端 Web Service Proxy 类集,您可以使用其中的类从应用程序调用该 Web 服务。


    注意:生成 Web Service Client Stub 的另外一种方法是运行 Web Service Proxy 向导 (File->New->Business-Tier->Web-Services->Web Service Proxy),然后在该向导中提供直接 WSDL URL 地址来生成您的 stub/代理。'
    此服务实际的 WSDL URL 是:http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl。(您随时可以查看 http://xmethods.net 主页上列出的其他众多 Web 服务。)
  3. 生成了客户端 (Proxy/Stub) 代码之后,代码编辑器应该打开并将光标置于 main() 方法中。此时,您可以快速测试您的客户端代码,以确保可以调用该 Stock Web 服务。要测试该服务,请在“// Add your own code here”之后添加一行来调用 getQuote() 方法并将其输出到控制台中。您可以提供一个股票代号,如“orcl”,来进行测试。
    请参见下面的代码示例:

  4. 成功测试之后,在日志窗口中应该看到当前的股价:

  5. 下一步是创建一个新方法:getStock(),该方法会将股票代号作为一个参数接受,然后返回包含当前股价的字符串。然后我们将在这个 JSF 应用程序中使用此方法。
    要创建这个新方法,复制整个 main() 方法,并将其粘贴在其自身的下面,然后在粘贴的代码上执行下列更改:
    • 将所粘贴方法的名称从 main 更改为 getStock,并将其更改为仅接受“String symbol”这个参数。
    • 将该方法的返回类型更改为 String
    • 声明一个新的浮点型变量 price,并将其设为 0(零);
    • try 代码块中,添加下列代码:
      price = myPort.getQuote(symbol);
    • 在该方法的最后,添加一个 return 语句,如下所示:
      return "The current price of " + symbol + " is:" + price + ".";


      现在该构建我们的 JSF 应用程序了!
  6. 在同一项目中,调用 JSF JSP 向导:(File->New->Web-Tier->JSF->JSF JSP)。

  7. 在 JSF JSP 向导中,您可以接受所有默认设置,也可以在向导中进行单击来自定义一些设置。如果一步一步完成该向导,则请确保为此页同时选择了 JSF Core 1.0JSF HTML 1.0 标记库。

  8. 生成页面之后,您可以添加一些(h2 或 h3)大标题文本,甚至可以添加 CSS (jdeveloper) 来为其提供漂亮的外观。

  9. 接下来,您可以添加一些文本,如“Enter Stock Symbol”,然后向该页拖放一个 JSF Input Text 组件。(此组件位于“JSF HTML”调色板页面上。)

  10. 接下来,在该页面上放入一个 Command Button,然后在 Property Inspector 中将其 Value 属性设置为“Get Quote”。

  11. 现在向该页面拖放一个 Output Text 组件,然后在属性查看器中删除其默认的 Value

  12. 接下来就是好玩的部分了!在可视编辑器中双击该 Command Button,


    JDeveloper 将自动跳至该代码编辑器中与该 Command Button 的 action 属性绑定的方法中。


    重要注意事项:当您向页面拖放组件时,JDeveloper 默认情况下将自动生成“后台代码”。如果您愿意,还可以关闭此设置,手动编写所有后台代码。
    请参阅我 2 月 5 日有关此主题的网志了解更多信息:http://radio.weblogs.com/0130966/2005/01/05.html
  13. 现在我们要更改该按钮的事件代码,以接受输入域的值,使用该值调用 Web 服务,然后显示结果。
    那么第一步,输入您生成的 Web 服务客户端类的名称。该名称应如下所示:
    XMethods_Simple_Stock_QuotePortClient。



    请注意,在您输入类名之后,JDeveloper 会识别该名称,并提示您导入包含此类的包。使用 (Alt-Enter) 导入该包。

  14. 导入该包之后,添加下列代码以完成该事件代码。
    • 声明一个 String 型变量“result”。
    • 将其值设置为使用 inputText1.getValue() 作为参数调用该客户端类的 getStock() 方法时返回的值。(注意:您需要将其强制转换为 (String)
    • 然后使用该 Web 服务调用返回的结果设置 outputText1 的值。
    • 可选:您可以返回一个“success”字符串,可以以后在导航情况下使用该字符串。(对于此方法文档,无需此步骤。)



      好了,成功了!!!
  15. 现在,当您运行该页面时,将能够在输入域中输入股票代号,当前股价将显示在该页面中!

总结

此示例演示了生成一个 Web 服务客户端类集,然后在 JSF 应用程序中使用该类集是如何的简单。请尽管使用不同的 Web 服务(简单的或复杂的类型)来试验。

Left Curve
热门下载
Right Curve