PHP / Java Integration

Содержание

Коментарии

An _very_ important thing here is to remember that the apache must be linked with pthreads (do "LDFLAGS=-lpthread ./configure <options>", or like me, add it the the .spec file).
You can check if your apache is pthreaded with "ldd $(which httpd)" if you like.
I experianced a lot of hangs/errors due to this problem, it's a shame that it's not in the docs / README (i didn't find it).

Magnus
2001-12-24 23:52:47
http://php5.kiev.ua/manual/ru/ref.java.html
According to an Article posted at:

http://www.zend.com/zend/week/week91.php#Heading7

there might be some problems with getting php and jdk-1.4 to work toghether.. I`ve tried (php-4.2.2 and jdk-4.1) with no success....
2002-08-28 14:50:42
http://php5.kiev.ua/manual/ru/ref.java.html
This module allows PHP to interact with some interesting pieces of software - for one, it allows PHP to convert XML FO files into PDF/PS/... with the use of Apache FOP processor.

Here's an example:
<?
$basedir 
= new Java("java.io.File"".");
$outdir = new Java("java.io.File""out");
$outdir->mkdirs();

$fofile = new Java("java.io.File"$basedir"xml/fo/helloworld.fo");
$pdffile = new Java("java.io.File"$outdir"ResultFO2PDF.pdf");

echo 
"Input: ".$fofile->toString()."\n";
echo 
"Output: ".$pdffile->toString()."\n";

$driver = new Java("org.apache.fop.apps.Driver");
$logger = new Java("org.apache.avalon.framework.logger.ConsoleLogger");
$driver->setLogger($logger);
$driver->setRenderer($driver->RENDER_PDF);
$out = new Java("java.io.FileOutputStream"$pdffile);
$driver->setOutputStream($out);
$in = new Java("java.io.FileInputStream"$fofile);
$driver->setInputSource(new Java("org.xml.sax.InputSource"$in));
$driver->run();
$in->close();
$out->close();
?>
2003-06-03 09:57:09
http://php5.kiev.ua/manual/ru/ref.java.html
I was able to compile java support in no problem and got it working sun jdk 1.4.2_03 (linux)

make sure JAVA_HOME is set

make sure LD_LIBRARY_PATH has

$JAVA_HOME/jre/lib/i386

on php.ini

[Java]
java.home = "/opt/j2sdk1.4.2_03"
java.class.path = "/opt/php/lib/php/php_java.jar:/opt/php/java-packages"
java.library.path = "/opt/php/lib/php/extensions/no-debug-zts-20020429"
extension_dir= "/opt/php/lib/php/extensions/no-debug-zts-20020429"
extension = java.so

It's import to note that APACHE 2 needs to be compiled using "PREFORK" instead of a thread based else the java stuff will work for a minute, then stop working with the following error

"PHP Fatal error:  Unable to create Java Virtual Machine"

Seems that the extension is not thread safe.
2004-02-02 16:39:48
http://php5.kiev.ua/manual/ru/ref.java.html
This works fine on MacOS X (Panther). The one trick is, you need to symlink "java.so" in your php extensions directory to "libphp_java.jnilib".

Here's the relevant section from my php.ini file for anyone who needs it:

[Java]
java.class.path = "/usr/local/lib/java/php_java.jar"
java.home = "/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Home"
java.library.path = "/usr/local/lib/php/extensions/no-debug-non-zts-20020429"
extension=java.so

You may have decided to put php_java.jar somewhere other than where I did.

For some reason, setting java.library in the ini file causes this to fail, so I left it out and things worked flawlessly without it. YMMV.
2004-02-29 06:16:29
http://php5.kiev.ua/manual/ru/ref.java.html
The Java Servlet SAPI works fine in a non-threading
environment. If you want to use threads (normal case) you
have to do several things to get it work:

- get the patched files from
  http://www.pelikan-it.com/download.html

- replace the sapi/servlet/servlet.java and
  sapi/servlet/servlet.c file by the patched files

- build the php like this
  ./configure --with-tsrm-pthreads \
    --with-servlet=/opt/resin --with-java=/opt/java \
    --prefix=/opt/php-4.3.4

The primary problem is, that the request and response 
objects are stored as global instance-variables of the servlet 
which will be overwritten by other threads invoking the 
servlet (remember: just on servlet-object for all threads!) and 
all crashes. I changed the servlet to pass the request and 
response objects to the java- and native-methods (where 
required) to prevent the problem.

Once you have solved this problem it works fine and needs 
unlike the java-extension just one jvm.
2004-03-03 11:08:38
http://php5.kiev.ua/manual/ru/ref.java.html
As mentioned prior, Zend is working to be the first of an official servlet / scripting integration. I've been testing their reference implementation that's available on the JSR 223 site and it's working pretty good. Some minor issues around the edges, but been working with one of their developers to fix it. So far, pretty good.
2004-08-26 13:05:27
http://php5.kiev.ua/manual/ru/ref.java.html
The PHP/Java bridge that has been posted some time ago is now available on sourceforge.net.  It contains several bugfixes and is meant to be used as a replacement for the expermental PHP4 java bridge.

  http://sourceforge.net/projects/php-java-bridge/

So please don't send me private e-mails anymore to obtain the sourcecode for the bridge.

PHP/5 users may want to wait for the official PHP/Java bridge, which I expect to appear in a few years when java contains the appropriate hooks.
2004-08-31 08:08:00
http://php5.kiev.ua/manual/ru/ref.java.html
Автор:
<quote> JVM runs fine the first time, then broke....  </quote>

The php4 java extension is simply broken, don't use it.  I am
using the "PHP Java Bridge" for PHP5 with great success on WinNT:

http://php-java-bridge.sourceforge.net
2005-05-08 05:04:26
http://php5.kiev.ua/manual/ru/ref.java.html
The php-java-bridge mentioned below is indeed the way to go. It also works fine on a php 4.3.2 Linux web server. I think I can reccomend it.
2005-05-25 08:24:06
http://php5.kiev.ua/manual/ru/ref.java.html
The php-java-bridge from sourceforge works great - it's stable and fast. I'm using it with the Lucene full text indexing package (http://lucene.apache.org/java/docs/index.html).
2005-08-31 15:51:55
http://php5.kiev.ua/manual/ru/ref.java.html
Getting PHP JavaBridge to work with PHP5 on windows server:
====================================
1- Install Java J2EE 1.5 + JDK 1.4 (which includes application server/deploy tool/etc...)
2- download pecl-5.0.5-Win32.zip and php-java-bridge_2.0.8.zip, which will include 
extra dll(s)
    - unpack pecl pkg to your extensions folder, in PHP5 its ext.
    - unpack java-Bridge to root php folder, in my case its simply C:\PHP
    Note: the java-Bridge inculdes new versions of certain files like php_java.dll
    so, it would be wise to rename your old files that came with PECL pkg for example
    file_old, to rollback at anytime.

In order to deploy/test Java-Bridge .war onto your java application server follow these steps

http://cvs.sourceforge.net/viewcvs.py/php-java-bridge/php-java-bridge/
INSTALL.WINDOWS?view=markup

Note: move JavaBridge.jar to your extensions folder. and in test.php file that came 
with Java-Brdige package change line java_require("test/arrayToString.jar"); 
to java_require("tests.php4/arrayToString.jar");

Add the following to your php.ini file and restart server:-
java.classpath = "location of JavaBridge.jar file...i.e. to your PHP extensions folder\
JavaBridge.jar,also any other extra java files that you'll be instanciating using your php script"
java.java_home = "location of jdk\bin"
java.libpath = "location of php_java.dll file...i.e. also to your PHP extensions folder"

happy integration

Cheers!!
2005-10-30 13:03:55
http://php5.kiev.ua/manual/ru/ref.java.html
If you get this error

Fatal error: Unable to create Java Virtual Machine in

it can be fixed by modifying your php.ini file, you will need to add in the path to the JRE's lib folder.

My php.ini file (php4/Apache2):
java.class.path= "e:\minerva\php\extensions\php_java.jar; c:\j2sdk1.4.2_08\jre\lib; C:\j2sdk1.4.2_08"
java.home = "c:\j2sdk1.4.2_08\bin; c:\j2sdk1.4.2_08\jre\lib"
java.library = "c:\j2sdk1.4.2_08\jre\bin\server\jvm.dll"
java.library.path= "e:\minerva\PHP\extensions; c:\j2sdk1.4.2_08\jre\lib"
2006-02-07 09:40:34
http://php5.kiev.ua/manual/ru/ref.java.html
I just wanted to post this for people that were having the same troubles that I was having.  I am running OES SuSe Linux 9-1.  I started this adventure because I needed to connect to a progress database via PHP.  And I couldn't use ODBC drivers because the progress ODBC drivers were simply to old for unixODBC and iODBC (progress 9.1c).  So I had to use JDBC with this wonderful PHP extension along with the PHP-Java Bridge found at:
http://sourceforge.net/projects/php-java-bridge
So Just for some notes, in the PHP.INI file I had to have:

extension=java.so
[java]
java.java_home=/usr/local/java
java.classpath=.:/usr/progress/dlc91c/java/progress.jar
:/usr/progress/dlc91c/java/jdbc.jar
java.libpath=.:/usr/progress/dlc91c/lib
:/usr/local/lib/php/extensions

And be careful because lots of sites tell you that the two varibles above are java.class.path, and java.library.path.

And also to be able to connect to a progress database from java in Linux you have to set your LD_ASSUME_KERNEL varible to 2.4.0 to do this simply add to you profile.local file:
export LD_ASSUME_KERNEL=2.4.0. 
If you want to know why please email me and I will tell you.
2006-03-08 13:46:51
http://php5.kiev.ua/manual/ru/ref.java.html
Автор:
For those who want to run php with a recent tomcat version, you'll need the following patch:

http://wiki.apache.org/tomcat/UsingPhp
2006-03-11 12:33:59
http://php5.kiev.ua/manual/ru/ref.java.html
Автор:
wamp5_1.7.2.exe+jdk1.5.0_10 integration error
extension=php_java.dll
[java]
java.home="C:\Program Files\Java\jdk1.5.0_10; C:\Program Files\Java\jdk1.5.0_10\lib"
java.class.path="C:\wamp\php\ext\JavaBridge.jar; C:\Program Files\Java\jdk1.5.0_10\lib"
java.library.path="C:\wamp\php\ext; C:\Program Files\Java\jdk1.5.0_10\lib"
java.library="C:\Program Files\Java\jdk1.5.0_10\jre\bin\server\jvm.dll"
2007-07-25 01:46:12
http://php5.kiev.ua/manual/ru/ref.java.html

    Поддержать сайт на родительском проекте КГБ