java - 如何解决 Exception::java.security.AccessControlException: HttpServlet 中的访问被拒绝

标签 java servlets

我创建了一个 Servlet 类,我正在尝试从 Oracle 11g 检索一条记录,并且我也尝试使用 MySQL 数据库,但出现此异常:error ouput image

我正在使用以下内容:

WebServer: Tomcat9
JRE: 1.8
Databases: Oracle 11g,MySQL

这是我的 servlet 类:

public class EmployeeSearchApp extends HttpServlet{

    private static final String EMP_SEARCH_DETAILS = "SELECT EMPMO,ENAME,JOB,SAL,EMPNO FROM EMP WHERE EMPNO=?";

      private static final String url="jdbc:oracle:thin:@localhost:1521:orcl";
      private static final String userName = "scott"; 
      private static final String password = "tiger";
    /*
     * private static final String url="jdbc:mysql://localhost:3306/world"; private
     * static final String userName = "ram"; private static final String password =
     * "padma";
     */

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        PrintWriter pw=null;
        int eno=0;
        Connection con=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        try {
            //Getting the print Writer Object 
            pw=res.getWriter();

            //Setting the content type
            res.setContentType("text/html");

            //getting the parameter value
            eno=Integer.parseInt(req.getParameter("eno"));

            //JDBC code

            //Registering JDBC driver
            Class.forName("oracle.jdbc.driver.OracleDriver");
            //Class.forName("com.mysql.jdbc.Driver");

            //Establishing the db connection
            con=DriverManager.getConnection(url,userName,password);

            //Preparing the Prepared Statement object
            ps=con.prepareStatement(EMP_SEARCH_DETAILS);

            //set the value into query param
            ps.setInt(1, eno);

            //execute the sql query
            rs=ps.executeQuery();

            //process the result set object
            if(rs.next()) {
                pw.println("<h1>EMPLOYEE DETAILS</h1>");
                pw.println("<h1>Employee ID:"+rs.getInt(1)+"</h1>");
                pw.println("<h1>Employee Name:"+rs.getString(2)+"</h1>");
                pw.println("<h1>Employee Job:"+rs.getString(3)+"</h1>");
                pw.println("<h1>Employee Sal:"+rs.getDouble(4)+"</h1>");
                pw.println("<h1>Employee Dept NO:"+rs.getInt(5)+"</h1>");
            }

        }catch (SQLException se) {
            se.printStackTrace();
            pw.println("<h1 style='color:red;'>Internal Database problem</h1>");
        } 
        catch (ClassNotFoundException cnf) { 
            cnf.printStackTrace();
            pw.println("<h1 style='color:red;'>Internal problem</h1>"); 
        }

        catch (Exception e) {
            e.printStackTrace();
            pw.println("<h1 style='color:red;'>Internal problem</h1>");
        }finally {
            rs.close();
            ps.close();
            con.close();
        }
    }   
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        doGet(req, res);
    }
}

控制台异常如下

Exception::java.security.AccessControlException: access denied

当出现此异常时,可能出现什么情况? 我该如何解决这个问题?

最佳答案

堆栈跟踪显示安全管理器(即:java 策略)已启用,并限制您访问系统属性。 这意味着您的 JVM/Tomcat 已配置为限制 Web 应用程序权限和操作。只有目标平台的管理员可以帮助您(在运行策略中添加足够的授权,或者为您提供实现目标的替代方法)。

关于java - 如何解决 Exception::java.security.AccessControlException: HttpServlet 中的访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60799288/

相关文章:

java - 如何使用 java 流来避免此代码发生变化?

java - Jackson 的多态反序列化问题

java - JSP 返回 HTTP 状态 404 - 未找到 glassfish

java - jetty WebSocket 自定义事件

java - 如何只获取 java.sql.ResultSet 的第一行?

java - 如何处理 Web 服务中的竞争条件?

java - 从 jsp 向 servlet 传递值,但 servlet 不可用

java - 将数据库中的数据存储检索到 Java

java - 在Servlet中使用org.json会导致java.lang.ClassNotFoundException:org.json.JSONException

java - JPA createNativeQuery 未映射到实体类