0

我使用基于表单的身份验证(使用 JSF)创建了一个简单的登录测试设置。我有一个 login.jsf 页面和一个 error.jsf 页面,可以在登录失败时重定向到。现在,在我正在关注的教程中(这本书是Java EE 6 Development with Netbeans 7),他们最初创建了两个页面,其中包含相同的登录项,然后通过使用带有里面的登录表单。

当我没有 JSF 段时,登录设置运行良好。由于添加了 JSF 段并更改了两个页面以使用它,我收到一个 500 Internal Server 错误,其中包含与我正在使用的任何页面相关的 FileNotFoundException,但只是第一次!如果我在收到此错误后刷新页面,它可以工作。

这是有问题的部分:

<!-- loginform.jspf -->
<%@ page pageEncoding="UTF-8" %>
   <p>Please enter your username and password:</p>
    <form method="POST" action="j_security_check">
        <table border="1">
            <tbody>
                <tr>
                    <td>Username:&nbsp;</td>
                    <td><input type="text" name="j_username" value="" /></td>
                </tr>
                <tr>
                    <td>Password:&nbsp;</td>
                    <td><input type="password" name="j_password" value="" /></td>
                </tr>
            </tbody>
        </table>
        <input type="submit" value="Login" />
    </form>

由于我进行了此更改,我尝试恢复为简单地让两个页面包含相同表单的不同版本,但仍然没有运气。

这是 Glassfish 在第一次加载其中一个页面时抛出异常的示例:

Glassfish 错误

如果您需要我上传更多源代码进行故障排除,请在评论中说出来,我会发布它(除非必要,否则我不希望这个问题被源代码淹没)。

谢谢你的时间!

编辑:我注意到一件快速的事情。即使在让 Glassfish 加载一段时间后,第一次访问任何页面时,我仍然会收到此异常。

4

1 回答 1

0

我设法弄清楚发生了什么。显然 glassfish/domains//generated/jsp 中的 JSP 部署文件夹归 root 所有,这不知何故使第一次运行时无法访问其中的项目。我仍然不确定为什么它会让我在刷新后访问这些页面,但是 chowning 整个 glassfish 安装为我解决了这个问题。

该问题与我在服务器日志中发现的异常有关:

"The scratchDir you specified: /home/bitwise/glassfish3/glassfish/domains/
bitwise/generated/jsp/securedsimplewebapp is unusable."

因此,如果有人遇到类似的例外情况,请检查以确保您是 glassfish 安装的所有者。

于 2013-05-23T15:53:53.527 回答