将 Java Web 应用从 Windows 移植到 AIX 时需要注意的问题
2008-01-05 08:26:06 来源:WEB开发网核心提示:2007 年 3 月 26 日研究您在将 java? Web 应用程序从 Windows? 移植到 AIX? 时可能会陷入的三个陷阱,并了解如何避免它们,将 Java Web 应用从 Windows 移植到 AIX 时需要注意的问题,在开发应用程序时,您通常是在开发环境中进行,清单 1. 客户端发出一个 HTTP 请求
2007 年 3 月 26 日
研究您在将 java? Web 应用程序从 Windows? 移植到 AIX? 时可能会陷入的三个陷阱,并了解如何避免它们。在开发应用程序时,您通常是在开发环境中进行,然后再将它们部署到生产环境。 假如您在 Windows 上进行开发并部署到类 UNIX? 平台,则可能会碰到一些微妙的陷阱。第一个陷阱是在 Windows 和 AIX 中设置不同的行分隔符,第二个陷阱说明了在不同开发环境和操作系统中定位文件的最佳方法,第三个陷阱是套接字通信中的一个常见异常。
引言
现在您通常是在开发环境中开发应用程序,然后再将它们部署到生产环境中。大多数时候,Windows? 是开发平台的理想选择,因为存在如此多强大的集成开发环境(Integrated Development Environment,IDE)可供使用。诸如 UNIX、linux? 或 AIX? 等类 UNIX? 平台则由于其稳定性而成为理想的生产平台。Java? 被宣称是高度平台无关的编程语言,具有所谓的编写一次,到处运行 特性。在大多数情况下,当在不同平台之间移植时,此特性可以为开发人员节省许多时间。然而,您应该知道一些陷阱 或缺陷,以确保您的应用程序在目标平台中完全按您希望的那样操作。
本文将讨论可能会在移植过程期间陷入的三个陷阱。其中提供了帮助您避免陷阱的信息,以便您安全地享用 Java 编程语言的强大功能。
HTTP 通信问题HTTP 通信在每种 Web 应用程序中都非常普遍。每当调用某个 Servlet 或 JavaServer Pages (jsp),就会发生 HTTP 通信。虽然 HTTP 协议是平台无关的,但是在不同平台之间通信时需要注重一些非凡的事项。
在本场景中,一个客户端对网关发起一个非凡请求,网关处理该请求,然后向客户端发回一个响应。该客户端使用基于 xml 的专有协议来与网关通信,并且网关仅处理遵守该协议的消息。该协议在 <Name> 和 <Greeting> 这两个 XML 元素之间需要一个换行符。
如清单 1 中的代码所示,该请求的正文添加了一个换行符。但是,服务器是否顺利地处理它并正确地响应呢?视情况而定。这是在跨不同平台移植 Java 应用程序时的一个常见问题。
清单 1. 客户端发出一个 HTTP 请求
try { URL url = new URL("http://localhost:9081/SampleWeb/Simulator"); URLConnection conn = url.openConnection(); conn.setDoOutput(true); conn.setRequestPRoperty("Content-Type", "application/xml"); OutputStream os = conn.getOutputStream(); PrintWriter writer = new PrintWriter(os); writer.println("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"); writer.println("<Name>"); writer.print("<first name>"); writer.print(“Rachel"); writer.println("</first name>"); writer.println("</Name>"); //A line break is required here writer.println(); writer.println("<Greeting>"); writer.println("Hello!"); writer.println("</Greeting>"); writer.flush(); conn.getInputStream();} catch (MalformedURLException mue) { System.err.println("error, message =" + mue);} catch (IOException ioe) { System.err.println("error, message =" + ioe);}
- 陷阱
- 该代码在 Windows 上的开发环境中工作得很好,但是在部署到 AIX 上的生产环境中以后,您会惊异地发现网关没有返回任何响应。那么这段似乎正确的代码出了什么问题呢?
更多精彩
赞助商链接