| 作者:David Botterill 和 Dongmei Cao,2006 年 1 月 |
|
|
| 要部署利用 Sun Java Studio Creator 2 IDE 开发的产品应用程序,必须将其导出为 WAR 文件。通过这种方法,您可以将应用程序部署到产品服务器(而不是开发环境服务器)。 |
如果您一直在开发使用 Web 服务的应用程序,您会注意到:WAR 导出功能在 WAR 文件中捆绑了 Web 服务的 WSDL 文件的端点地址。除非开发环境与产品环境相同,否则您需要更改这些端点引用以匹配产品系统上的 Web 服务地址。
同样,使用 EJB 组件的应用程序需要依赖代理代码来访问这些 EJB 组件。
在开发使用 Web 服务的应用程序时,IDE 会提取开发环境的 WSDL 文件中的端点地址,并将该地址放到客户端代码中。但是,当准备将应用程序部署到产品系统上时,需要更改此端点的地址。您可以通过将代码添加到放置 Web 服务的页面 Bean,在 Creator 中覆盖此端点的地址。
在页面 Bean 的 Java 源代码中,为特定的 Web 服务添加 setAddress 代码行,并将其引用设置为产品服务器的端点地址。例如,假设您已将 JavaTraveller Web 服务放到页面 Bean 中。通过添加以下代码行,可将此服务的 WSDL 端点地址覆盖为产品服务器的端点地址(假设已将 endpointURL 设置为 Web 服务的 URL 地址):
this.getJavaTravellerClient1().setAddress(endpointURL.toExternalForm());
此操作方法的完整代码如下所示:
public String button1_action() {
// Define a String for the result
String result = "";
/**
* Set the endpoint address of the web service.
*
*/
URL endpointURL = null;
try {
endpointURL = new URL(
"http://localhost:28080/JavaTravellerService/
JavaTravellerService");
} catch(MalformedURLException mfue) {
log("MalFormed URL for Endpoint Address=" +
endpointURL.toExternalForm(), mfue);
return null;
}
this.getJavaTravellerClient1().setAddress(
endpointURL.toExternalForm());
try {
result =
this.getJavaTravellerClient1().getTripItinerary("201");
} catch (Exception e) {
log("Page1 failure with web service", e);
}
this.getStaticText1().setEscape(false);
this.getStaticText1().setText(result);
return null;
}
该操作并不要求必须创建 URL 变量(就像在 endpointURL = new URL ... 行中一样)。您可能已将 URL 作为 setAddress 方法的参数进行输入了。但是,建议您“最好”单独创建 URL,因为这样可确保您键入的 URL 地址格式正确无误。如果键入的内容不正确,则会出现 URL 格式错误,而不是从 Web 服务客户端代码中抛出异常,指出服务端出现了某种原因不明的问题。
对于使用 EJB 组件的应用程序,EJB 引用(sun-web.xml 文件中的 ejb-ref 标记)将用作访问 Enterprise Bean 组件的别名。sun-web.xml 文件(或特定于应用服务器的部署描述符文件)保留了 EJB 引用别名和组件的实际 JNDI 名称之间的映射关系。因此,在将应用程序的 WAR 文件部署到产品应用服务器时,部署人员需要在 sun-web.xml 或特定于产品应用服务器的部署描述符文件中输入或更新此映射信息。
您可能还需要查找 EJB 引用的别名。可以在 EJB 组件的属性表单中找到 EJB 引用。要查找 EJB 引用,请在“服务器”窗口中单击 EJB 会话 Bean 组件。“属性”窗口将显示 EJB 组件的属性,其中包括 EJB 引用名称。例如,要查看 Currency Converter 组件的 EJB 引用名称,请在“服务器”窗口的 "Enterprise Java Beans" 部分单击位于 "Currency Converter" 下面的会话 Bean 节点 (ConverterEJB)。属性表单将显示该会话 Bean 的属性。
|