<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>蓝色数据 &#187; java</title>
	<atom:link href="http://bluedata.org/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://bluedata.org</link>
	<description>奋斗是幸福的……</description>
	<lastBuildDate>Mon, 14 Sep 2009 01:53:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>在 PHP 下使用 Java</title>
		<link>http://bluedata.org/2008/03/06/use-java-in-php/</link>
		<comments>http://bluedata.org/2008/03/06/use-java-in-php/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 09:22:51 +0000</pubDate>
		<dc:creator>Bluedata</dc:creator>
				<category><![CDATA[应用技术]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[pjb]]></category>

		<guid isPermaLink="false">http://blog.bluedata.org/the-use-of-java-in-php/</guid>
		<description><![CDATA[因系统需要在 PHP 下使用 Java，便做了相应的尝试，较为常见的是通过安装 PHP 自带扩展模块和安装 PJB(PHP/Java Bridge) 两种方式来实现。
先用 PHP 自带的扩展模块
系统环境：
CentOS4.5/Debian Etch
PHP-4.4.4
Apache-2.2.4
Apache, PHP 均为源代码编译安装。
安装 JDK：
# ./j2sdk-1_4_2_05-linux-i586.bin
Do you agree to the above license terms? [yes or no]
yes
其实就是解压到了当前目录，拷贝到 /usr/local 下：
# cp -ar j2sdk1.4.2_05 /usr/local/
设置环境变量：
# vi /etc/profile
JAVA_HOME=/usr/local/j2sdk1.4.2_05
CLASSPATH=${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib
PATH=$PATH:${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin
export JAVA_HOME CLASSPATH PATH
使环境变量生效（普通用户必须重新登陆环境变量才能生效）：
# source /etc/profile
# java -version
应该能看到版本信息了。
重新安装 PHP，在编译时加上：
--with-java=/usr/local/j2sdk1.4.2_05
安装完成后，会在 PHP 的 lib 下（我的是在 /usr/local/php/lib/php）有个 php_java.jar，同时在扩展动态库存放的目录下（我的是在 /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429）有个 java.so 文件。
配置 php.ini：
# vi /usr/local/php/etc/php.ini
文件末添加：
[java]
java.class.path=/usr/local/php/lib/php/php_java.jar
java.home=/usr/local/j2sdk1.4.2_05
java.library=/usr/local/j2sdk1.4.2_05/jre/lib/i386/libjava.so
java.library.path=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension=java.so
测试一下：
# vi [...]]]></description>
			<content:encoded><![CDATA[<p>因系统需要在 PHP 下使用 Java，便做了相应的尝试，较为常见的是通过安装 PHP 自带扩展模块和安装 PJB(PHP/Java Bridge) 两种方式来实现。</p>
<p>先用 PHP 自带的扩展模块</p>
<p>系统环境：<br />
CentOS4.5/Debian Etch<br />
PHP-4.4.4<br />
Apache-2.2.4<br />
Apache, PHP 均为源代码编译安装。</p>
<p>安装 JDK：<br />
# ./j2sdk-1_4_2_05-linux-i586.bin<br />
Do you agree to the above license terms? [yes or no]<br />
yes<br />
其实就是解压到了当前目录，拷贝到 /usr/local 下：<br />
# cp -ar j2sdk1.4.2_05 /usr/local/</p>
<p>设置环境变量：<br />
# vi /etc/profile<br />
JAVA_HOME=/usr/local/j2sdk1.4.2_05<br />
CLASSPATH=${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib<br />
PATH=$PATH:${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin<br />
export JAVA_HOME CLASSPATH PATH</p>
<p>使环境变量生效（普通用户必须重新登陆环境变量才能生效）：<br />
# source /etc/profile</p>
<p># java -version<br />
应该能看到版本信息了。<br />
重新安装 PHP，在编译时加上：<br />
--with-java=/usr/local/j2sdk1.4.2_05</p>
<p>安装完成后，会在 PHP 的 lib 下（我的是在 /usr/local/php/lib/php）有个 php_java.jar，同时在扩展动态库存放的目录下（我的是在 /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429）有个 java.so 文件。</p>
<p>配置 php.ini：<br />
# vi /usr/local/php/etc/php.ini<br />
文件末添加：<br />
[java]<br />
java.class.path=/usr/local/php/lib/php/php_java.jar<br />
java.home=/usr/local/j2sdk1.4.2_05<br />
java.library=/usr/local/j2sdk1.4.2_05/jre/lib/i386/libjava.so<br />
java.library.path=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429<br />
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429<br />
extension=java.so</p>
<p>测试一下：<br />
# vi java.php<br />
&lt;?php<br />
$system=new Java("java.lang.System");<br />
print 'Java version='.$system-&gt;getProperty('java.version');<br />
?&gt;</p>
<p>会有如下错误：<br />
Fatal error: Unable to load Java Library /usr/local/j2sdk1.4.2_05/jre/lib/i386/libjava.so, error: libjvm.so: cannot open shared object file: No such file or directory in /www/java.php on line 2</p>
<p>设置 Apache 启动时的环境变量：<br />
# vi /usr/local/apache/bin/apachectl<br />
export LD_LIBRARY_PATH=/usr/local/j2sdk1.4.2_05/jre/lib/i386:<br />
/usr/local/j2sdk1.4.2_05/jre/lib/i386/server</p>
<p>变成了如下错误：<br />
Fatal error: java.lang.UnsatisfiedLinkError: no php_java in java.library.path in /www/java.php on line 2</p>
<p>Google 得到这样的说法：有些 PHP 版本生成的是 libphp_java.so 文件，extension 的加载只认 libphp_java.so。<br />
那就做个链接：<br />
# cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429<br />
# ln -s java.so libphp_java.so</p>
<p>再次执行，可以正常显示：<br />
Java version=1.4.2_05</p>
<p>PHP 自带扩展模块运行 Java 的效率是比较低下的。<br />
换为更加高效的 PJB(PHP/Java Bridge)。<br />
项目主页：<a target="_blank" href="http://php-java-bridge.sourceforge.net/pjb/">http://php-java-bridge.sourceforge.net/pjb/</a></p>
<p>新的 5.2.0 版不再支持 PHP4 了，应该下载 4.3.2 版的。</p>
<p>安装 JDK 并配置环境变量，并在安装完 PHP 后继续安装 PJB：<br />
# tar zxvf php-java-bridge_4.3.2.tar.gz<br />
# cd php-java-bridge-4.3.2<br />
# /usr/local/php/bin/phpize<br />
# ./configure --with-java=/usr/local/j2sdk1.4.2_05 --with-php-config=/usr/local/php/bin/php-config<br />
# make<br />
# make install</p>
<p>在 /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 目录下出现了这样几个文件：<br />
javabridge.policy java.so php-script.jar script-api.jar JavaBridge.jar JavaBridge.war RunJavaBridge stamp</p>
<p>其中，JavaBridge.war 可以放到 Resin 或者 Tomcat 下发布出来。</p>
<p>配置 php.ini：<br />
# vi /usr/local/php/etc/php.ini<br />
[java]<br />
extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/java.so"<br />
java.hosts="192.168.0.254:8080"<br />
java.servlet=On</p>
<p>这下再执行 java.php，看到的是运行着 Resin 的远端服务器的 Java 版本了：<br />
Java version=1.6.0</p>
<p>在 Debian 下配置 php.ini 时也使用：<br />
extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/java.so"<br />
却出现了这样的错误：<br />
Fatal error: Cannot instantiate non-existent class: java in /www/java.php on line 2<br />
改为和加载 PHP 自带扩展模块一样的配置就可以了：<br />
extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429"<br />
extension=java.so</p>
]]></content:encoded>
			<wfw:commentRss>http://bluedata.org/2008/03/06/use-java-in-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Resin 增加 JVM 可使用内存</title>
		<link>http://bluedata.org/2005/08/23/resin-jvm-memory/</link>
		<comments>http://bluedata.org/2005/08/23/resin-jvm-memory/#comments</comments>
		<pubDate>Tue, 23 Aug 2005 09:52:29 +0000</pubDate>
		<dc:creator>Bluedata</dc:creator>
				<category><![CDATA[应用技术]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jvm]]></category>
		<category><![CDATA[resin]]></category>

		<guid isPermaLink="false">http://blog.bluedata.org/resin-jvm-memory/</guid>
		<description><![CDATA[最近频繁出现 java.lang.OutOfMemoryError 错误，造成 Resin 挂掉，查看进程，发现 java 进程只使用了 80M 的内存，这是 Resin 的默认值，看来需要增加 JVM 可使用的内存了。
# vi /etc/init.d/resin
找到
ARGS="-java_home $JAVA_HOME -resin_home $RESIN_HOME"
改为
ARGS="-java_home $JAVA_HOME -resin_home $RESIN_HOME -J-ms512m -J-mx512m"
这里根据应用的状况把 JVM 内存使用量提高到了 512M 。
注意，过度增加这个值的大小会造成系统的不稳定。
]]></description>
			<content:encoded><![CDATA[<p>最近频繁出现 java.lang.OutOfMemoryError 错误，造成 Resin 挂掉，查看进程，发现 java 进程只使用了 80M 的内存，这是 Resin 的默认值，看来需要增加 JVM 可使用的内存了。<br />
# vi /etc/init.d/resin<br />
找到<br />
ARGS="-java_home $JAVA_HOME -resin_home $RESIN_HOME"<br />
改为<br />
ARGS="-java_home $JAVA_HOME -resin_home $RESIN_HOME -J-ms512m -J-mx512m"<br />
这里根据应用的状况把 JVM 内存使用量提高到了 512M 。<br />
注意，过度增加这个值的大小会造成系统的不稳定。</p>
]]></content:encoded>
			<wfw:commentRss>http://bluedata.org/2005/08/23/resin-jvm-memory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
