应用程序启动错误

使用此信息来对启动应用程序时出现的问题进行故障诊断。

启动应用程序时,您遇到的是哪类错误?

以下注意事项适用于本主题中的 ibm-web-ext.xmi 引用:
受支持的配置: 对于 IBM® 扩展和绑定文件, .xmi.xml 文件扩展名有所不同,具体取决于您是使用Java™ EE 5 之前的应用程序或模块,还是使用 Java EE 5 或更高版本的应用程序或模块。 IBM 扩展或绑定文件名为 ibm-*-ext.xmiibm-*-bnd.xmi ,其中 * 是扩展或绑定文件的类型,例如 appapplicationejb-jarweb。 存在下列条件:
  • 对于使用版本 5 之前的 Java EE 版本的应用程序或模块,文件扩展名必须为 .xmi
  • 对于使用 Java EE 5 或更高版本的应用程序或模块,文件扩展名必须为 .xml。 如果应用程序或模块随附 .xmi 文件,那么产品会忽略 .xmi 文件。

但是, Java EE 5 或更高版本的模块可以存在于包含Java EE 5 之前的文件并使用 .xmi 文件扩展名的应用程序中。

ibm-webservices-ext.xmiibm-webservices-bnd.xmiibm-webservicesclient-bnd.xmiibm-webservicesclient-ext.xmiibm-portlet-ext.xmi 文件继续使用 .xmi 文件扩展名。

HTTP Server 和应用程序服务器在独立工作,但请求未从 HTTP Server 传递到应用程序服务器

如果您的 HTTP 服务器似乎正常工作,并且应用程序服务器也独立工作,但发送到 HTTP 服务器的页面浏览器请求未提供服务,那么 WebSphere® Application Server 插件中存在问题。

在这种情况下:

  1. 确定 HTTP Server 是否正在尝试为请求的资源本身提供服务,而不是将其转发到 WebSphere Application Server。
    1. 浏览 HTTP Server 访问日志 (IHS install root/logs/access.log for IBM HTTP Server)。 这可能表明它无法在自己的文档根目录中找到文件。
    2. 浏览插件日志文件。
  2. 刷新 plugin-cfg.xml 文件,该文件确定将哪些发送到 HTTP Server 的请求转发到 WebSphere Application Server以及哪些应用程序服务器。
    使用控制台来刷此文件:
    • 在 WebSphere Application Server 管理控制台中,展开 "环境" 树控件。
    • 单击 "更新 WebSphere 插件"。
    • 停止然后重新启动 HTTP Server。

      [IBM i]If you are using IBM HTTP Server for iSeries or Lotus Domino for iSeries, you do not need to restart the HTTP server.

    • 重试 Web 请求。

    [IBM i]如果已创建 Web 服务器定义来对 Web 服务器实例进行建模,那么该文件位于 profile_root/config/cells/cell_name/nodes/Web_server_node_name/servers/Web_server_name下。 如果没有,那么该文件位于 profile_root/config/cells下。

  3. 浏览 plugin_install_root/logs/web_server_name/http_plugin.log 文件以获取问题的线索。 确保具有最新插件信息节(在装入插件时输出)的时间戳记与 Web 服务器的启动时间一致。
  4. 通过将 plugin-cfg.xml 文件中的 LogLevel 属性设置为 Trace 并重新装入请求来开启插件跟踪。 浏览 plugin_install_root/logs/Web_server_name/http_plugin.log 文件。 您应该能够看到尝试将请求 URI 与 plugin-cfg.xml中的路由的各种 URI 定义进行匹配的插件。 检查插件不匹配哪些规则,然后指出您是否需要添加其他规则。 如果您最近刚安装 了应用程序,那么您可能需要手动重新生成插件配置以便挑选出与新的应用程序相关的新 URI。

有关对插件相关问题进行故障诊断的进一步详细信息,请参阅 Web 服务器插件故障诊断技巧

文件服务问题

如果文本输出显示在 JSP 或 Servlet 支持的 Web 页面上,但图像文件未显示,请执行以下操作:

  • 验证您的文件是否位于正确的位置: Web 应用程序 WebSphere Application Server 的 document root 目录遵循 J2EE 标准,这意味着文档根目录是已部署的 Web 应用程序的 web_module_name.war 目录。

    [AIX Solaris HP-UX Linux Windows]通常,此目录位于 install_root/installedApps/nodename/appname.ear 目录或 install_root/installedApps/nodename/appnameNetwork.ear 目录中。

    [IBM i]通常,此目录位于 profile_root/installedApps/nodename/appname.ear 目录或 profile_root/installedApps/nodename/appnameNetwork.ear 目录中。

    如果文件在文档根的子目录中,那么验证此文件的引用是否反映它。 即,如果 invoices.html 文件存储在 Windows 目录 web_module_name.war\invoices中,那么从 Web 应用程序中的其他页面显示该文件的链接应该为 invoices\invoices.html而不是 invoices.html

  • 验证是否将 Web 应用程序配置为启用文件服务(换而言之,验证此应用程序是否能够显示图像和 .html 文件之类的静态资源):
    1. 通过在 组装工具中浏览源 .war 文件来查看托管 Web 模块的文件服务属性。 如果必要,更新属性并重新部署模块。

    2. 在所部署的 Web 应用程序的 ibm-web-ext.xmi 配置文件中,编辑 fileServingEnabled 属性。

      [AIX Solaris HP-UX Linux Windows]该文件通常位于 install_root/config/cells/nodename or nodenameNetwork/applications/application_name/deployments/application name/Web_module_name/web-inf 目录中。

      [IBM i]该文件通常位于 profile_root/config/cells/nodename or nodenameNetwork/applications/application_name/deployments/application name/Web_module_name/web-inf 目录中。

图形不显示在 JSP 文件或 Servlet 输出中。

如果文本输出显示在 JSP 或 Servlet 支持的 Web 页面上,但图像文件未显示,请执行以下操作:

  • 验证图形文件的位置是否正确:Web 应用程序的文档根目录。 产品遵循 J2EE 标准,这意味着文档根目录是所部署的 Web 应用程序的 web_module_name.war 目录。

    [AIX Solaris HP-UX Linux Windows]通常,此目录位于 install_root/installedApps/nodename/appname.ear 目录或 install_root/installedApps/nodename/appnameNetwork.ear 目录中。

    [IBM i]通常, 此目录位于 profile_root/installedApps/nodename/appname.ear 目录或 profile_root/installedApps/nodename/appnameNetwork.ear 目录中。

    如果图形文件位于文档根目录的子目录中,请验证对图形的引用是否反映了这一点; 例如,如果 banner.gif 文件存储在 Windows 目录 web_module_name.war/images中,那么要显示该文件的标记应该为: <img SRC="banner.gif">,而不是 <img SRC="banner.gif">

  • 验证是否将 Web 应用程序配置为启用文件服务(即,显示图像和 .html 文件之类的静态资源)。
    1. 通过在 组装工具中浏览源 .war 文件来查看托管 Web 模块的文件服务属性。 若有必要,更新属性并重新部署模块。

    2. 编辑已部署的 Web 应用程序 ibm-web-ext.xmi 配置文件中的 fileServingEnabled 属性。

      [AIX Solaris HP-UX Linux Windows]该文件通常位于 install_root/config/cells/nodenamenodenameNetwork/applications/application_name/deployments/application name/Web_module_name/web-inf 目录中。

      [IBM i]该文件通常位于 profile_root/config/cells/nodenamenodenameNetwork/applications/application_name/deployments/application name/Web_module_name/web-inf 目录中。

    3. 完成上面的步骤之后:
      • 在管理控制台中,展开“环境”树控件。
      • 单击 更新 WebSphere 插件
      • 停止并重新启动 HTTP 服务器,然后重试 Web 请求。

SRVE0026E: [Servlet 错误]-[无法编译 JSP 文件的类]

如果首次尝试访问新的或已修改的 .jsp 文件时浏览器中出现此错误,那么最可能的原因是 JSP 文件 Java 源代码在 javac 编译阶段失败 (不正确)。

[AIX Solaris HP-UX Linux Windows][IBM i]检查 SystemErr.log 文件以获取编译器错误消息,例如:
C:\WASROOT\temp\ ... test.war\_myJsp.java:14: \
Duplicate variable declaration: int myInt was int myInt
int myInt = 122; 
String myString = "number is 122"; 
static int myStaticInt=22; 
int myInt=121; 
      ^
注: 本主题引用一个或多个应用程序服务器日志文件。 作为建议的替代方法,您可以将服务器配置为使用高性能可扩展日志记录 (HPEL) 日志和跟踪基础结构,而不是在分布式系统和 IBM i 系统上使用 SystemOut.logSystemErr.logtrace.logactivity.log 文件。 您还可以将 HPEL 与本机 z/OS® 日志记录工具结合使用。 如果您正在使用 HPEL,那么可以从服务器概要文件 bin 目录使用 LogViewer 命令行工具来访问所有日志和跟踪信息。 有关使用 HPEL 的更多信息,请参阅 有关使用 HPEL 对应用程序进行故障诊断的信息。

修正 JSP 源文件中的问题,保存源并再次请求 JSP 文件。

如果在尝试为一个 JSP 文件提供服务时发生此错误,而该 JSP 文件是从能够成功地运行该文件的另一个系统复制的,那么表明新的服务器环境有一些不同,这些不同导致该 JSP 文件无法运行。 浏览错误文本,以获取与以下内容类似的语句:
Undefined variable or class name: MyClass
此错误表明支持的类或 jar 文件未复制到目标服务器,或者它不在类路径中。 查找文件 MyClass.class,并将其放到 Web 模块的 WEB-INF/classes 目录中,或者将包含此文件的 .jar 文件放到 Web 模块的 WEB-INF/lib 目录中。

通过执行以下操作验证用来访问资源的 URL 是否正确:

  • 对于 JSP 文件, html 文件或图像文件: http://host_name/Web_module_context_root/subdir under doc root, if any/filename.ext。 Web 应用程序的文档根目录是已安装应用程序的 application_name.WAR 目录。
    • 例如,要访问 myhost.mydomain.com 上的 c:\WebSphere\ApplicationServer\installedApps\myEntApp.ear\myWebApp.war\invoices 中的 myJsp.jsp 文件,并假定 Web 模块 myWebApp 的上下文根目录是 myApp,那么 URL 为 http://myhost.mydomain.com/myApp/invoices/myJsp.jsp。
    • 缺省情况下,JSP 服务已启用。 必须在 组装工具中,或者通过在已安装的 Web 应用程序的 ibm-web-ext.xmi 文件中将 fileServingEnabled 属性设置为 true 并重新启动应用程序来启用为 HTML 和图像文件提供的文件作为 Web 模块的属性。

  • 对于由类名提供服务的 Servlet , URL 为 http://hostname/Web_module_context_root/servlet/packageName.className

    [AIX Solaris HP-UX Linux Windows]例如,要访问位于 c:\WebSphere\ApplicationServer\installedApps\ myEntApp.ear\myWebApp.war\WEB-INF\classes 中的 myCom.myServlet.class 并假设 myWebApp 模块的上下文根是 myApp, URL 将是 http://myhost.mydomain.com/myApp/servlet/myCom.MyServlet.

    [IBM i]例如,要访问位于 profile_root/installedApps/myEntApp.ear/myWebApp.war/WEB-INF/classes 中的 myCom.myServlet.class 并假设 myWebApp 模块的上下文根是 myApp, URL 将是 http://myhost.mydomain.com/myApp/servlet/myCom.MyServlet.

  • “按类名提供 Servlet 服务”必须作为 Web 模块的一个属性启用,并且缺省情况下处于启用状态。 必须在 组装工具中,或者通过在已安装的 Web 应用程序的 ibm-web-ext.xmi 文件中将 fileServingEnabled 属性设置为 true 并重新启动应用程序来启用为 HTML 和图像文件提供的文件作为 Web 应用程序的属性。

更正 HTML 文件, servlet 或 JSP 文件中的 URL。 没有前导斜杠 (/) 的 HREF 继承调用资源上下文。 例如:

  • http://[hostname]/myapp/servlet/MyServletServletB 中的 HREF 解析为 http://hostname/myapp/servlet/ServletB
  • http://[hostname]/myapp/servlet/MyServletservlet/ServletB 中的 HREF 解析为 http://hostname/myapp/servlet/servlet/ServletB (错误)
  • http://[hostname]/myapp/servlet/MyServlet/ServletB 中的 HREF 解析为 http://hostname/ServletB (如果 ServletB 需要与 MyServlet相同的上下文根,那么将发生错误)
[AIX Solaris HP-UX Linux Windows][IBM i]

修改并保存 JSP 文件后,更改未显示在浏览器中

原因可能是未将 Web 应用程序配置为进行 Servlet 重新装入,或者重新装入时间间隔过长。

要解决此问题,请在 组装工具中,检查有关 Web 模块的 IBM Extensions 中的 "已启用重新装入" 标志和 "重新装入时间间隔" 值。 启用重新装入,或者如果已启用,请缩短重新装入时间间隔。

错误消息:/jspname.jsp(9,0) Include: Mandatory attribute page missing

尝试浏览 JSP 文件时出现错误 Message: /jspname.jsp(9 , 0) Include: 缺少必需属性页面

在转换为 Java 阶段期间, JSP 文件可能失败。 确切地说,一个 JSP 伪指令(在本例中,是 Include 语句)不正确或者引用了找不到的文件。

要解决此问题,在 JSP 源中修正此问题,保存此源并再次请求此 JSP 文件。

[AIX Solaris HP-UX Linux Windows][IBM i]

根据 JSP 文件生成的 Java 源代码未保留在临时目录中

JSP 处理器可能未配置为保留生成的 Java 源。

组装工具中,检查有关 Web 模块的 "组装属性扩展" 下的 JSP 属性。 确保 keepgenerated 属性存在并设为 true。 如果此属性不存在,请设置此属性并重新启动 Web 应用程序。 要查看此操作的结果,请从 temp 目录中删除类文件,以强制 JSP 处理器将 JSP 源再次转换为 Java 源。

错误 找不到企业应用程序 [您输入的应用程序名称]

JSP 批处理编译器失败,显示消息 Enterprise Application [application name you 输入的应用程序名称] not found

可能是期望以 .ear 子目录(位于 applications 目录中)开始的完整企业应用程序路径和名称作为 JspBatchCompiler 工具的参数,而不只是显示名。

[AIX Solaris HP-UX Linux Windows]目录路径为 install_root\config\cells\node_nameNetwork\applications

[IBM i]目录路径为 profile_root/config/cells/node_nameNetwork/applications

例如:

  • JspBatchCompiler -enterpriseapp.name sampleApp.ear/deployments/sampleApp 正确,而不是
  • JspBatchCompiler -enterpriseapp.name sampleApp,这是不正确的。

非英语浏览器输入的翻译问题

如果非英语字符集浏览器输入在被 Servlet 或 JSP 文件读后无法进行转换,那么确保在读之前按照期望的字符集对请求参数进行编码。 例如,如果站点是中文的,那么目标 .jsp 文件中应该有一行:
 req.setCharacterEncoding("gb2312");
在任何 req.getParameter 方法调用之前。

此问题会影响从较早版本的 WebSphere Application Server移植的 Servlet 和 jsp 文件,这些 Servlet 和文件会根据 WebSphere Application Server的语言环境自动转换字符。

滚动条不显示在浏览器窗口中的项周围

在某些浏览器中,展开到分配给它们的窗口之外的树或表类型项没有允许您查看整个列表的滚动条。

要解决此问题,右键单击浏览器窗口并单击菜单中的重新装入

错误 无法显示页面,找不到服务器或 DNS 错误

尝试浏览 JavaServer Pages (JSP) 文件时发生错误 页面无法显示,服务器找不到或 DNS 错误

当 HTTP 超时导致服务方停止并重新启动时,可能发生此错误。 要解决此问题,增大 ConnectionIOTimeOut 值:

  1. 从管理控制台中,选择系统管理 Deployment Manager 管理服务 定制属性
  2. 选择 ConnectionIOTimeOut。
  3. 增大 ConnectionIOTimeOut 值。
  4. 单击确定