在单击 Finish 之后,portlet 就被部署到 Workplace Collaboration Services 服务器中,并且浏览器也被调用。可以导航到 PortletPreview 页面来查看 portlet。(因为 Workplace Collaboration Service 运行在调试模式下,所以它显然比平常慢很多)。
提示:如果编辑在 Portal 选项卡下创建的服务器配置,并将 Label Ordinal 字段设置为零,那么 PortletPreview 页面将是您打开的第一个页面。
如果一切顺利,那么您应该看到错误消息:“This portlet is unavailable. If the problem persists, please contact the portal administrator”。参见图 8。
图 8. MeasureConverterPortlet 错误
调试应用程序
显然,我们所讨论的 portlet 中有一个错误,我们必须调试该错误。打开 MeasureConverterPortlet 项目中的 MeasureConverterPortletView.jsp 文件,切换到 Source 选项卡,并在第 8 行中插入一个断点:
PortletSession pSession = portletRequest.getPortletSession();
为了调试问题,首先必须连接到服务器。在 Servers 视图中,右击服务器并从菜单中选择 Debug。Rational Application Developer 将连接到远程 Workplace Collaboration Services 服务器,并切换到 Debug 视图。在浏览器中导航到 PortletPreview 页面。当服务器正在呈现该页面时,它应该能够找到您所设置的断点,并且控制权将传递给 Rational Application Developer 的 Java 调试器。使用这个调试器可以执行普通的单步执行,并进入到代码行 —— Java 和 JavaServer Pages (JSP) —— 检查和修改变量。
如果使用 F6 键来单步调试 JSP 的 Java 代码的每一行,那么应当看到是什么导致 portlet 不可用:
String formText = sessionBean.getFormText();
String message = null ;
if( formText.length() > 0 )
{
...
}
在这个代码片段中,getFormText() 方法返回 null,这意味着 formText.length() 将抛出一个 Null Pointer 异常。现在我们完成了对此错误的调试,然后可以通过再次右击 Servers 视图中的服务器并选择 Disconnect 来断开与远程服务器的连接。
为了解决导致异常的问题,请打开 MeasureConverterPortletSessionBean.java(可能需要切换回 J2EE 或 Web 视图来打开此文件)并将下列代码行:
private String formText = null ; 更改为:
private String formText = "" ; 保存更改,并通过右击 portletand 并选择 Run - Run On Server 来再次运行 portletand。在这里,portlet 应当能正确显示,但还有一个故障需要修复。如果输入 10 km 作为输入,它会被错误地标志为无效输入。
再次通过在 Servers 视图中的服务器的上下文菜单中选择 Debug 连接到服务器。如果仍然保留着先前的断点设置,那么会在同样的位置中断。如果没有中断,需要像先前一样再次设置断点。
再次分步调试 JSP 的 Java 代码,我们将看到输入被正确的检索为 10 km。进一步观察还可以发现, MeasureConverterDelegate 类正确地执行了转换,将 10 km 转换为 6.2 英里。
文章来源于领测软件测试网 https://www.ltesting.net/