Java中怎么保护服务器安全,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
在一个web应用程序提出多个数据库在一个事务范围内进行操作的请求以后(这个请求就是通过UserTransaction发出),就会发送到Tomcat上,而Tomcat中已经配置了事务管理器(就是TransactionManager),那么就由Java编程加密事务管理器处理这个请求,执行两阶段提交协议,想各个数据库进行提交,而这些数据库驱动和以往的数据库驱动有不同,是支持JTA的驱动,下面是一段示例代码
<%@page contentType="text/html;charset=GB2312"%> <%@page import="java.sql.*"%> <%@page import="javax.sql.*"%> <%@page import="javax.naming.*"%> <%@page import="javax.transaction.UserTransaction"%> <% ResultSet rs = null; Statement stmt = null; UserTransaction ut = null; Connection conn = null; try { Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); DataSource ds = (DataSource) envCtx.lookup("jdbc/framework"); ut = (UserTransaction)initCtx.lookup("java:comp/UserTransaction"); conn = ds.getConnection(); ut.begin(); System.out.println("<<< beginning the transaction >>>"); stmt = conn.createStatement( // ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE ); rs = stmt.executeQuery("SELECT PRICE FROM TM_PRODUCT WHERE ID=1"); rs.next(); } catch(Exception e) {e.printStackTrace();} %> <html> <body> Original price: <%=rs.getString("price")%> <br>After update: <% PreparedStatement pstmt = conn.prepareStatement("update tm_product set price=? where id=1"); pstmt.setInt(1,101); pstmt.executeUpdate(); rs = stmt.executeQuery("SELECT PRICE FROM TM_PRODUCT WHERE ID=1"); rs.next(); %> <%=rs.getString("price")%> <br>After Rollback: <% System.out.println("<<< rolling back the transaction >>>"); ut.rollback();//Or ut.commit(); rs = stmt.executeQuery("SELECT PRICE FROM TM_PRODUCT WHERE ID=1"); rs.next(); %> <%=rs.getString("price")%> <%conn.close();%> </body> </html>
关于Java中怎么保护服务器安全问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。