`
沙漠绿树
  • 浏览: 430189 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

php和java协同开发

    博客分类:
  • PHP
阅读更多
引用
    因为在做垂直搜索工作中,使用的是java编写的一个搜索类库。做垂直搜索,很多实用要使用到配置。当搜索的信息量大时,网站的更新。搜索程序的配置维护是一个不可忽视的问题。所以用了php做网页,提供配置界面,这样就可以不用直接修改配置文件或是配置数据库表。当把配置信息配置好了,我们需要检测配置是否正确,因为使用的是java程序,所以检测配置的正确与否使用的也是java程序来检测。这里就存在一个问题,就是需要把php页面上的信息传入到java程序中去检测。这个时候就需要php和java通信了。下面我就来介绍下怎么使php跟java通信(当然,你也可以使用类似webservice等技术)也就是php中调用java程序。

       php要调用java程序:需要以下准备,php程序,java程序,还有就是shell程序或是bat程序。下面分别介绍下在linux服务器下php调用java程序和在windows服务器下调用java程序。前提是php,apache,jdk的环境都已经配置好。


 一 在linux下php调用java程序是通过shell文件。分别是以下三个文件: test_shell.php  test_shell.java  test_shell.sh 他们的源代码如下:

1.test_shell.java程序代码

public class test_shell {

	public static void main(String[] args) {
		
		System.out.println("你输入的参数是:"+args[0]+"\t"+args[1]);

	}

}

2.test_shell.php程序代码

<?php
	/*
	 * 该函数是用来执行shell命令的,其实还可以使用:exec(),system(), 	 * popen()和pclose(),passthru() 函数。最长用的是前面两个和例中使 	 * 用的shell_exec()。
	 */
	 $args1="我喜欢你";
	 $args2="我很爱你";
	
	 // 注意空格
	$r=shell_exec("./test_shell.sh $args1 $args2");

	echo $r;

?> 


3.test_shell.sh程序代码是

#!/bin/sh

JAVA_HOME=/usr/local/jdk

CLASSPATH=.:/usr/local/jdk/jre/lib/rt.jar:/usr/local/apache/htdocs/test_shell/test_shell.class

PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME CLASSPATH PATH

cd /usr/local/apache/htdocs/test_shell

java test_shell

#shell代码结束

以下是三个程序的存放路径和运行次序。
1.三个文件都必须在同一目录下,比如在/usr/local/apache/htdocs/test_shell/下,不然php很难调到java程序。

2.把test_shell.java程序编译成test_shell.class,然后把test_shell.class文件存放到CLASSPATH中。如果系统配置了那些环境变量,这里在配置一次是没有坏处的,也不会影响配置好的系统环境变量。这里设置的好处是当没有配置jdk环境配置,只有jre时,则需把jre放到/usr/local/jdk下就以。


二、下面先介绍在windows服务器下,php调用java程序是通过bat文件来的。分别是以下三个文件: test_bat.php  test_bat.java  test_bat.sh 他们的源代码如下:

1.java程序

public class test_bat {

	public static void main(String[] args) {
		
		System.out.println("你输入的参数是:"+args[0]+"\t"+args[1]);

	}

}

2.test_bat.php程序代码

<?php
	/*
	 * 该函数是用来执行shell命令的,其实还可以使用:exec(),system(), 	 * popen()和pclose(),passthru() 函数。最长用的是前面两个和例中使 	 * 用的shell_exec()。
	 */
	 $args1="我喜欢你";
	 $args2="我很爱你";
	
	 // 注意空格
	$r=shell_exec("./test_shell.sh $args1 $args2");

	echo $r;

?> 


3.test_bat.sh程序代码是

@echo off
set path=%path%;%cd%\jre\bin
set CLASSPATH=.;%cd%\jre\lib\rt.jar;%cd%\test_bat.class
java test_bat %1 %2

#bat代码结束

1.三个文件都必须放在同一目录下,比如在/usr/local/apache/htdocs/test_bat/下,不然php很难调到java程序。

2.把test_bat.java程序编译成test_bat.class,然后把test_bat.class文件存放到CLASSPATH中。如果系统配置了那些环境变量,这里在配置是没有坏处的,也不会影响配置好的系统环境变量。这里设置的好处是当没有配置jdk环境配置,只有jre时,则需把jre放到跟跟test_bat.java同一目录下就行了。


三、上面两个例子中,test_shell.sh用的绝对路径,test_bat.bat是用的相对路径。不管是绝对还是相对,只要路径对了就行了。

分享到:
评论
10 楼 dawnmy 2012-03-20  
想请问一下,我在php里调用java为什么没有成功,也没有任何错误提示。直接在php里调用打印hello,world的java程序都不成功,是不是php要做什么对java方面的配置啊?
9 楼 pdreamer 2010-05-04  

调用系统命令来协同使用php和java是不知死活的。

系统开销那可不是一般的大。就是用xml、json来交互或共享数据都比使用系统命令强很多

php_java 也不是什么好东西
8 楼 phpxiaoxin 2010-04-21  
<div class="quote_title">fyland 写道</div>
<div class="quote_div">
<p> </p>
<pre name="code" class="php">// get instance of Java class java.lang.System in PHP
$system = new Java('java.lang.System');

// demonstrate property access
echo 'Java version=' . $system-&gt;getProperty('java.version') . '&lt;br /&gt;';
echo 'Java vendor=' . $system-&gt;getProperty('java.vendor') . '&lt;br /&gt;';
echo 'OS=' . $system-&gt;getProperty('os.name') . ' ' .
             $system-&gt;getProperty('os.version') . ' on ' .
             $system-&gt;getProperty('os.arch') . ' &lt;br /&gt;';

// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
                      "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

echo $formatter-&gt;format(new Java('java.util.Date'));</pre>
 </div>
<p> </p>
<p>这个java类是什么?原来是php的一个java模块。<span>刚才照了一下minij2ee有个sjop协议也可以完成php调java,原理是由minij2ee将java转换成php,然后php将对应的文件引入就可以使用了。</span></p>
7 楼 andot 2010-04-16  
还是用Hprose吧,比楼主的方式和上面说的这些方式都要简单容易的多,效率还是SOAP的100倍。
6 楼 leeper 2010-04-16  
还是soap吧,数据都用xml通信的,跨平台跨语言。
5 楼 fyland 2010-04-15  
<p>
</p>
<pre name="code" class="php">// get instance of Java class java.lang.System in PHP
$system = new Java('java.lang.System');

// demonstrate property access
echo 'Java version=' . $system-&gt;getProperty('java.version') . '&lt;br /&gt;';
echo 'Java vendor=' . $system-&gt;getProperty('java.vendor') . '&lt;br /&gt;';
echo 'OS=' . $system-&gt;getProperty('os.name') . ' ' .
             $system-&gt;getProperty('os.version') . ' on ' .
             $system-&gt;getProperty('os.arch') . ' &lt;br /&gt;';

// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
                      "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

echo $formatter-&gt;format(new Java('java.util.Date'));</pre>
 
4 楼 willko 2010-04-15  
rest/rpc/gearman/ice這麼多方式不用。。。
3 楼 mathgl 2010-04-15  
很有些啰嗦...语言自己定义 server api 算了。何必搅在一起
2 楼 四不象 2010-04-14  
那么复杂啊,用REST+JSON就行了
1 楼 korpton 2010-04-14  
这样用吃力,怎么就不用python把它们结合起来,python号称为胶水语言

相关推荐

    技术经理决策参考-Java和PHP的协同开发方案

    在IT行业中,尤其是在后端开发领域,Java和PHP两种语言的协同开发经常遇到。这篇讨论主要聚焦于三种有效的协同开发方案:SOAP、php-java-bridge和Quercus,旨在帮助技术经理做出明智的决策。 首先,SOAP(Simple ...

    PHP/Java Bridge的JavaBridge.jar、php-servlet.jar和php-script.jar

    综上所述,PHP/Java Bridge通过JavaBridge.jar、php-servlet.jar和php-script.jar提供了一种强大的集成方案,让PHP和Java可以协同工作,共同构建复杂的、跨语言的应用系统。了解并熟练掌握这些组件的使用,对于提升...

    借《浅谈PHP与Java之Web开发整合技术》说LAJP

    通过上述三种技术——SOAP、Quercus和PHP/JavaBridge,开发人员能够灵活地在PHP和Java之间搭建桥梁,实现跨语言的协同工作。每种技术都有其独特的优势和适用场景,选择合适的方案可以极大提升Web应用的开发效率和...

    php+java开发部署环境配置2012-11-15

    在IT行业中,构建一个跨...综上所述,配置PHP+Java的开发部署环境涉及多个环节,需要对两种语言的环境、配置以及协同开发工具有深入理解。在实际操作过程中,应根据项目具体需求调整步骤,确保环境稳定、高效且安全。

    Tomcat-PHP: script-api.jar,php-servlet.jar,php-script.jar,JavaBridge.jar

    通过JavaBridge和Servlet,Java和PHP两种不同的编程语言能够在一个服务器环境下协同工作,为开发者提供了更多的灵活性和选择。 总结起来,"Tomcat-PHP"的集成涉及到Java Servlet技术、JavaBridge以及相关jar文件的...

    php-java.rar

    在Web开发领域,PHP和Java是两种广泛使用的编程语言。PHP以其简单易学和高效执行的特点,常...解压后的"phpjava"文件是一个宝贵的资源,可以帮助我们深入了解和实践这些技术,进一步提升PHP和Java之间的协同开发能力。

    Java JDK16,开发必备物品

    Node.js开发者通常使用JavaScript进行服务器端编程,但是Java的生态系统丰富,很多大型项目可能结合了Java技术,因此熟悉JDK更新对于协同开发或迁移部分功能至Java平台有所帮助。JDK16的开关表达式(Switch ...

    基于jfinal+easyUI+activiti的Java企业协同平台设计源码

    该项目是一款基于jfinal、easyUI和activiti框架构建的企业级协同平台设计源码。该平台集成了1705个PNG图片、921个...该平台支持Java、JavaScript、CSS、HTML和PHP等多种编程语言,旨在提供高效的企业协同工作解决方案。

    Thrift java服务端、php客户端

    6. **跨语言通信**:Thrift使得Java和PHP等不同语言的系统可以无缝协同工作。 7. **分布式系统**:Thrift适用于构建分布式服务,支持多语言环境。 通过学习和实践这个Thrift Demo,开发者可以深入理解Thrift的工作...

    PHP+Mysql网站开发案例教程

    这样的实践项目有助于提升你的编程技巧,使你能更好地理解PHP和MySQL在实际应用中的协同工作方式。 在【PHP网站开发及案例教程.ppt】中,你将看到详细的步骤分解,每个阶段都配有清晰的图表和示例代码,帮助你逐步...

    PHP自适应OA协同办公系统源码.zip

    【PHP自适应OA协同办公系统源码】是一个基于PHP编程语言和MySQL...开发者可以基于源码进行二次开发,以适应特定企业的业务需求,同时,对于想要学习PHP和协同办公系统开发的人来说,这也是一个宝贵的实践和学习资源。

    cas实现单点登录,登出(java和php客户端)

    标题中的“CAS实现单点登录,登出(Java和PHP客户端)”指的是使用中央认证服务(Central Authentication Service,简称CAS)来构建一个跨域、跨平台的单点登录(Single Sign-On, SSO)系统。在这样的系统中,用户只...

    php java海关联调服务api接口 179号公告接入

    【描述】中提到的“海关联调服务”是指海关业务系统与外部系统(如企业内部系统)之间的协同工作,确保数据的准确传输和及时处理。这种联调服务通常涉及到货物报关、税费缴纳、物流跟踪等多个环节。其中,“js 轮询...

    计算机后端-Java-PHP视频教程javascript01-demo.rar

    【综合资源】这部分可能包括了使用Java、PHP和JavaScript开发的示例项目,或者是这三个语言的交互操作,帮助学习者理解如何在实际项目中协同使用这些技术。可能涵盖数据库连接、HTTP请求、模板引擎、路由、中间件等...

    script-api.jar,php-servlet.jar,php-script.jar,JavaBridge.jar.zip

    在Tomcat环境中,这个桥接器是实现PHP与Java协同工作的重要组件。 要配置Tomcat支持PHP项目,你需要进行以下步骤: 1. **下载和解压**:首先,你需要下载这些jar文件,并将它们从zip包中解压出来。确保将它们放置...

    JAVA商城源代码+PHP商城源代码.zip

    Java和PHP是两种广泛应用于Web开发的编程语言,尤其在构建电子商务平台时,它们都有各自的优势。Java以其强大的企业级功能和跨平台特性而闻名,而PHP则以其易学易用和丰富的开源库著称。 【Java商城源代码】 Java...

    基于Java核心技术的政务协同平台设计源码

    本项目是一款基于Java核心技术的政务协同平台设计源码,集成了2956个文件,涵盖1264个JavaScript文件、328个Java源文件、325个...平台采用多语言开发,包括JavaScript、Java、HTML、CSS、PHP,旨在提高政务协同效率。

    JAVA 开发opencart简洁主题simplecart sot12.zip

    10. **调试与日志记录**:为了便于开发和维护,Java主题可能包含了详细的日志记录和调试工具,帮助开发者定位和修复问题。 由于没有具体的文件名称列表,我们无法深入了解每个文件的具体功能。不过,通常一个...

    java全部知识点总结文档

    - **Git**:版本控制工具,协同开发的重要保障。 以上就是"java全部知识点总结文档"可能涵盖的主要内容。无论是初学者还是经验丰富的开发者,都能从中找到提升自己技能的宝贵资料。通过深入学习和实践,你将能够...

Global site tag (gtag.js) - Google Analytics