作者 主題: 需要用php呼叫別人已寫好的的java class,只想到用 system("java xxx.xxx");  (閱讀 4682 次)

0 會員 與 1 訪客 正在閱讀本文。

布瓜

  • 可愛的小學生
  • *
  • 文章數: 27
    • 檢視個人資料
需要用php呼叫別人已寫好的的java class,
目前能想到的方法只有使用: system("java –classpath /usr/local/Jude com.davidflanagan.jude.Jude datafile.jude"); 的方法
請問各位大大的意見?

p.s. 不會考慮用jsp,它曾經把我搞瘋過

ifgh

  • 懷疑的國中生
  • **
  • 文章數: 84
    • 檢視個人資料

布瓜

  • 可愛的小學生
  • *
  • 文章數: 27
    • 檢視個人資料
我看過後,有兩個結論:

1. 將 php整合入java servlet 的環境,如tomcat

2. 將php對java支援的功能整合進來

如果要整合,

1.在compile php 前的configure 要打: ./configure --with-java=<java directory>

2. 將/usr/local/bin/php加到 apache 的cpi-bin的目錄中(ava支援的功能整合進來,php必須要是cgi模式,而非 sapi模組才能成功)


安裝要點:
-------------------------------------------------------------------
1. download
2. cd /usr/local
3. gunzip php-4.2.3.tar.gz
4. cd php-4.2.3
5. ./configure -with-java=<java directory>
6. make
7. make install
8.將/usr/local/bin/php加到 apache 的cpi-bin的目錄中(ava支援的功能整合進來,php必須要是cgi模式,而非 sapi模組才能成功)


9. 改php.ini
[java]
java.class.path=/usr/local/lib/php/php_java.jar:/usr/share/pgsql/jdbc7.1-1.2.jar:/var/www/html
java.home=/usr/local/j2sdk1.4.0_02
java.library=/usr/local/j2sdk1.4.0_02/jre/lib/i386/libjava.so
extension_dir=/usr/local/lib/php/extensions/no-debug-non-zts-20020429
extension=java.so

10.到java.library.path 打 ln -s java.so libphp_java.so


註: 不僅是標準的jdk class 可call , 以下是convert XML FO files into PDF/PS/... 範例

<?
$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();
?>