Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java应用程序中调用不同的java应用程序_Java_Mysql_Netbeans - Fatal编程技术网

从java应用程序中调用不同的java应用程序

从java应用程序中调用不同的java应用程序,java,mysql,netbeans,Java,Mysql,Netbeans,我需要保护我的主java应用程序和MYSQL服务器之间的连接。现在,我的主java应用程序中有一个类,其中包含有关SQL server的信息(登录详细信息;用户、密码、模式等) 我试图混淆那门课,但没有成功。然后我听到了一些关于使用连接信息调用外部java应用程序并安全地检索该信息的消息 我怎么能执行这样的事情 Runtime run; Process pr = null;

我需要保护我的主java应用程序和MYSQL服务器之间的连接。现在,我的主java应用程序中有一个类,其中包含有关SQL server的信息(登录详细信息;用户、密码、模式等)

我试图混淆那门课,但没有成功。然后我听到了一些关于使用连接信息调用外部java应用程序并安全地检索该信息的消息

我怎么能执行这样的事情

                 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)?您必须将结果解析回您想要使用的格式,因此是的,它应该是可行的