我正在启动一个需要与外部oracle数据库通信的网站项目。 oracle数据库由用java编写的系统管理。我想知道我是否可以使用php在网站中使用这些java类。
作为一个例子,我试图实现类似:shell_exec(“path / java GetSomething”),但“path / java”存储在远程服务器上。
我是否给出了正确的方法?这会导致安全问题吗?
答案 0 :(得分:0)
我是否给出了正确的方法?
没有。它不会起作用。您不能只是“在另一台服务器上运行shell命令”。当然,除非你已经设置了一堆基础设施来支持这一点,否则你不能这样做。
会导致安全问题吗?
这将是您需要解决的问题。
这里真正的问题是你的“问题描述”太模糊了,无法理解你所做的事情是否有任何意义......从技术,建筑和实践的角度来看。
答案 1 :(得分:0)
实现这一目标的一种方法是通过php使JSP Web服务消费。这是一个非常基本的开始,但想法是,你有一个生活在java服务器上的jsp,它可以通过web调用。它接受参数,然后使用这些参数命中数据库,并返回它。 PHP调用此服务并读取它返回的数据。
<强> DatabaseService.jsp 强>
String query = Request.getParameter('query');
ResultSet rs = MyDbClass.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
while (rs.next())
{
for (int i = 1; i <= colCount; i++)
{
String columnName = rsmd.getColumnName(i);
Object value = rs.getObject(i);
out.println(columnName+":"+value.toString()+'\t');
}
out.println("\r\n");
}
<强> oracleConnect.php 强>
$query=urlencode("SELECT * FROM DB.table");
$results=file_get_contents("http://remoteServer.com/DatabaseService.jsp?query=$query");
这是高度简化的,您将需要以某种方式输出数据,如xml,以及发送其他参数,api密钥,使用CURL
而不是file_get_contents
,任何数字事情,但这个基本模型应该让你从正确的方向开始。