从java应用程序中调用不同的java应用程序
我需要保护我的主java应用程序和MYSQL服务器之间的连接。现在,我的主java应用程序中有一个类,其中包含有关SQL server的信息(登录详细信息;用户、密码、模式等) 我试图混淆那门课,但没有成功。然后我听到了一些关于使用连接信息调用外部java应用程序并安全地检索该信息的消息 我怎么能执行这样的事情从java应用程序中调用不同的java应用程序,java,mysql,netbeans,Java,Mysql,Netbeans,我需要保护我的主java应用程序和MYSQL服务器之间的连接。现在,我的主java应用程序中有一个类,其中包含有关SQL server的信息(登录详细信息;用户、密码、模式等) 我试图混淆那门课,但没有成功。然后我听到了一些关于使用连接信息调用外部java应用程序并安全地检索该信息的消息 我怎么能执行这样的事情 Runtime run; Process pr = null;
Runtime run;
Process pr = null;
run = Runtime.getRuntime();
pr = run.exec("your program.jar");
pr.getInputStream().close();
InputStream eos = pr.getErrorStream();
您可以使用一个文件将信息传递给jar应用程序当处理客户机/服务器风格的应用程序时,所有业务逻辑,包括持久层,都应该在服务器端维护 也就是说,客户端连接到某个服务器进程并发出请求。它永远不应该关心数据是如何管理或存储的。它只关心获取和操作数据。这也意味着您可以集中处理与该数据相关的业务,这意味着如果该数据发生更改,您就不太可能需要更改客户 这也意味着数据库的所有访问信息永远不会离开服务器的域 现在的问题是,你如何实现。这个答案将归结为您想要实现什么,以及您想要实现它的方式,但是,我还要补充,客户端应该首先与服务器进行身份验证,这意味着必须让用户输入用户名和密码,以便能够访问数据(除非它是一个公共可访问的API,否则您可能不在乎) 你可以用 。这将允许您公开客户端可以与之交互的服务器对象。如果您希望将对象从服务器发送到客户端,这很好。它允许客户端与Java对象交互,就像它们是本地对象一样 从编码的角度来看,这是一个(相对)简单的解决方案,因为您正在处理Java对象 你可以用 普通。这将允许您连接到服务器上的服务并与之通信 您甚至可以在客户端和服务器之间序列化对象,允许应用程序处理Java对象 这也是一种更加困难的方法,因为您需要负责处理低级协议和错误处理(RMI会为您处理) 但是,这种方法确实为其他客户端提供了连接到服务器的机会(只要您只使用普通套接字和序列化对象;) 这是一个很大的工作 你可以用 某种web服务(例如Tomcat下的Servlet或J2EE服务器上的事件),它将使用简单的HTTP请求列出可用的服务/函数,这些服务/函数将返回类似JSON或XML的响应,然后客户端需要解析这些响应 到目前为止,这是最开放、可能也是最常见的解决方案。它需要一些工作才能开始运行,但比起使用套接字这样的工具,它的参与性要小得多,而且它也是最灵活的,因为您不需要在每次更改或更新服务时都发布任何库 现在,所有这些都允许您通过SSL通过线路提供安全连接,您只需要建立从客户端到服务器的正确连接,这样就增加了安全级别
每个层都将数据库访问隐藏在服务器层后面,为数据库添加了额外的保护。您认为这样做会更安全吗?即使使用SSL连接,仍然可以拦截和解码流(当然这更困难,但考虑到每次请求信息时信息可能都是相同的,所以机会会增加),我理解这一点。但我只希望连接类不在应用程序中或在.jar中不可见。数据库服务器是否本地化到客户端计算机上或在远程服务器上运行?删除Web主机上的服务器。这要求用户在其计算机上安装其他应用程序?应用程序必须在其计算机中。我可以在Web主机上使用第三个选项吗(使用CPanel)?您必须将结果解析回您想要使用的格式,因此是的,它应该是可行的