javaice
‘壹’ 用ice实现java和c++的通信,代理类型返回为空是什么原因
有区别, ICE 在基本上的相同的,但很多都是基于slice上的。 换句话来讲只能是在slice上通用。
实际ICE是根据slice生成不同的原生语言(java,c++,php,c#)等,所以在语言上是等同于使用原生语言开发。 在数据上几乎是一样的,不过在显示中文的时需要注意字符集问题。
返回代理类型为空一般都是,ICE的配置属性是于相符, 代理是不是找不到。
‘贰’ ice锛宼hrift镐ц兘鍝涓楂
涓や釜妗嗘灦镄勶细
1銆傝法璇瑷
涓や釜妗嗘灦閮藉緢濂界殑锅氩埌浜呜繖涓镣癸纴涓绘祦镄勫紑鍙戣瑷C++,Java,Python,Ruby绛夌瓑閮借兘鏀鎸併
2銆备唬镰佺敓鎴
涓や釜妗嗘灦閮芥湁镊宸辩殑IDL,(Interface Define Lanaguage),鍦↖CE閲岄溃鍙玸lice鏂囦欢锛孴hrift閲岄溃灏卞彨Thrift鏂囦欢锛岀敤𨱒ユ弿杩板皢瑕佸疄鐜扮殑链嶅姟鎺ュ彛锛岀劧钖庨氲繃宸ュ叿绋嫔簭镊锷ㄧ敓鎴愰ㄦ灦浠g爜锛屾瘆濡俢lient鍜宻erver绔镄剆tub浠g爜.Thrift鐢熸垚镄勪唬镰侀兘鍦ㄤ竴涓鏂囦欢閲岋纴ICE鍒欑粏镊寸殑澶氾纴鑳藉緢濂界殑鍖哄垎闾i儴鍒嗘槸server绔锛岄偅閮ㄥ垎鏄痗lient绔鐢ㄧ殑銆
3銆傜绣缁滀紶杈撶殑缂栫爜鍜岃В镰
瀵硅薄鍦ㄤ紶杈撹繃绋嬫椂锛屽彂阃佺鍙戦佹椂闇瑕佸皢Object缂栫爜鎴愬瓧鑺傛祦锛屾帴鏀剁鎺ユ敹钖庡垯灏呜繖浜涘瓧鑺傛祦瑙g爜鎴愬瑰簲镄凮bject,浠庝袱涓妗嗘灦镄勫疄鐜版潵鐪嬶纴ICE镄勭紪镰佽佹瘆Thrift瑕佺揣鍑戝拰缁忔祹镄勫氾纴Thrift鍦ㄧ紪镰丱bject镞讹纴杩炲悓Object镄凢ield镄勭被鍨嫔拰缂栧彿(Thrift瀹氢箟镄勬疮涓狾bject镄刦ield閮戒细鍒嗛厤涓涓缂栧彿)浠ュ强姣忎釜鍑芥暟镄勫弬鏁扮被鍨嫔拰缂栧彿閮界粰缂栫爜杩涘幓浜嗭纴ICE鍒欑粡娴庣殑澶氾纴鍙缂栫爜浜咶ield镄剉alue銆
4銆傛嗘灦链韬
Thrift鏁翠釜妗嗘灦浠g爜闱炲父绠娲侊纴鐩告瘆ICE𨱒ヨ达纴ICE瑕佹瘆Thrift瀹屽杽鍜屾垚镡熺殑澶氥傝繖涓涓昏佷綋鐜板湪链嶅姟镄勯珮鍙鐢ㄦу拰鍙镓╁𪾢镐ф柟闱銆
ICE鎻愪緵镄勬湇锷″彲浠ユ槸鍒嗗竷寮忕殑锛屾嗘灦链夊畬锽勶纴鎴愮啛镄勮繍琛岀幆澧冩潵杩愯屾湇锷★纴杩欎簺鐜澧冩彁渚涗简寰埚氩緢濂界殑链哄埗锛屾潵淇濊瘉链嶅姟镄勫彲镓╁𪾢鍜岄珮鍙鐢ㄦэ纴姣斿
Register链哄埗锛岄氲繃Register锛岃ヽlient鍐嶈繛鎺ユ湇锷℃椂澶氢简涓灞傚诲潃镄勬満鍒讹纴濡傚悓DNS涓镙凤纴鍙浠ユ柟渚跨殑灏嗘煇涓链嶅姟鍒囨崲鍒板叾浠栨満鍣ㄤ笂锛屽拰DNS浣泪P杞璇涓镙凤纴ICE鍙浠ラ氲繃Register𨱒ョ粰链嶅姟锅氲礋杞藉潎琛
涔熷洜涓篒CE鎻愪緵镄勮繖浜涚幆澧冨彲浠ヤ娇镄処CE缂栧啓镄勬湇锷¤兘鏂逛究镄勯儴缃插拰鍙戝竷銆
‘叁’ Java有哪些相关书籍
Concurrency Practice in Java
又一部 约书亚·布洛克 大神的经典之作,当然本书的另一位主作者为 Doug Lea(影响两次Java历史上的大变革的大神)。这本书几乎就是Java并发和多线程编程方面的权威,同时也是核心Java开发人员必读的一本书。本书的强大主要表现在
Head First Java
Head First Java是所有编程或者Java初学者最适合的书籍,我很喜欢轻松和寓教于乐的Head First风格,这应该是最有意思的关于Java的书
Head First 设计模式
Head First设计模式又是一部Head First系列的书籍。作者为Kathy Sierra及其团队。当我在2006年开始读这本书的时候,我对设计模式并不是很了解。设计模式解决什么问题,怎么解决问题,如何使用设计模式,设计模式有什么好处,这些问题我几乎都无法回答出来。
‘肆’ 基于ICE的PHP与java间的通信
PHP与JAVA融合的开发环境
一.系统环境
1.初始安装
防火墙开放接口:21,22,80,2401,8009,10000,eth0
Redhat linux 9.0
Development Tools
Network Servers
VSFtp
CVS-1.11.2-10
Mysql 3.23.54
2.包安装
JDK 1.5
下载地址:http://www.netshine.com.cn/linux/j2sdk-1_4_2_04-linux-i586.rpm
Tomcat 5.0.19
下载地址:http://www.netshine.com.cn/linux/jakarta-tomcat-5.0.19.tar.gz
3.脚本安装
Webmin 1.110
下载地址:http://www.netshine.com.cn/linux/webmin-1.110.tar.gz
ZendOptimizer 2.5.1
下载地址:http://www.netshine.com.cn/linux/ZendOptimizer-2.5.1-Linux_glibc21-i386.tar.gz
4.手工编译
Apache 2.0.49
下载地址:http://www.netshine.com.cn/linux/httpd-2.0.49.tar.gz
PHP 4.3.5
下载地址:http://www.netshine.com.cn/linux/php-4.3.5.tar.gz
JK 2-2.0.4
下载地址:http://www.netshine.com.cn/linux/jakarta-tomcat-connectors-jk2-src-current.tar.gz
5.客户机环境
Windows XP Professional
Absolute Telnet 3.0
Zend Encoder
Macromedia Dreamweaver MX 2004
Borland JBuilder 9 Enterprise
WinCVS 1.3
下载地址:http://www.netshine.com.cn/linux/WinCvs13b17.zip
二.系统安装
启动Linux安装光盘,安装基本系统:FTP、开发工具和MySQL3.23.54。如果你是手工编译安装MySQL,要记得以后在编译PHP等程序时要指明MySQL的具体路径,否则会因找不到路径而导致编译出错。
三.安装webmin1.110
用Webmin来配置系统,傻瓜化,可以节省不少力气,所以一般我都先安装它。安装过程很简单,执行setup.sh脚本后照提示一步一步来就可以了。
# cd webmin*
# ./setup.sh
四.安装JDK1.5
1.编辑如下三个文件,没有指明全路径的放在你自己的home目录就可以。
/etc/profile
JAVA_HOME=/usr/java/j2sdk1.4.2_04
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
CVSROOT=/usr/local/cvsroot
PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH CVSROOT PATH
/etc/ld.so.conf
/usr/java/j2sdk1.4.2_04/jre/lib/i386
/usr/java/j2sdk1.4.2_04/jre/lib/i386/server
HelloWorld.java
class HelloWorld
{
public static void main(String[] args)
{
//本文件测试Java环境是否安装成功。
System.out.println("Hello World!");
}
}
2.执行以下命令:
# rpm -ivh j2sdk*.rpm //安装JDK包。
# source /etc/profile //重载profile环境。
# ldconfig //创建动态链接库缓存文件。
# javac -d . HelloWorld.java //编译测试文件。
# java HelloWorld //运行程序测试安装是否成功。
五.安装Apache
# tar xvzf httpd* //解压源码包。
# cd httpd* //进入安装目录。
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite
# make;make install //编译并安装。
说明:
--enable-so选项:让Apache可以支持DSO模式,注意,我们在这里采用的是Apache2.0的语法。如果你的Apache是1.3版本,应改为--enable-mole=so。
--enable-mods-shared=most选项:告诉编译器将所有标准模块都编译为DSO模块。你要是用的是Apache1.3,改为--enable-shared=max就可以。
--enable-rewrite选项:支持地址重写功能,使用1.3版本的朋友请将它改为--enable-mole=rewrite。
六.编译安装PHP
1.执行命令
#tar xvzf php* //解压源码包
#cd php* //进入PHP安装命令
#./configure --prefix=/usr/local/php --with-mysql --with-apxs2=/usr/local
/apache/bin/apxs --with-java=/usr/java/j2sdk1.4.2_04
#make;make install //编译并安装
#cp php.ini-dist /usr/local/php/lib/php.ini //复制php配置文件
#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 //extensions目录
#ln -s java.so libphp_java.so //建立连接,忘记了会出错哦
#cd Zend* //进入ZendOptimizer目录
#./install //安装PHP加速器
说明:
--with-apxs2=/usr/local/apache/bin/apxs是Apache2的语法,1.3版本的用户请使用--with-apxs=/usr/local/apache/bin/apxs。
2.编辑下面三个文件
/usr/local/apache/conf/httpd.conf
LoadMole php4_mole moles/libphp4.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddDefaultCharset gb2312
/usr/local/apache/htdocs/test.php
<?php
//本程序测试PHP的JAVA环境是否可用,
代码是从http://www.php.net/manual/en/ref.java.php摘录下来的。
// get instance of Java class java.lang.System in PHP
$system = new Java('java.lang.System');
// demonstrate property access
echo 'Java version=' . $system->getProperty('java.version') . '<br />';
echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
echo 'OS=' . $system->getProperty('os.name') . ' ' .
$system->getProperty('os.version') . ' on ' .
$system->getProperty('os.arch') . ' <br />';
// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");
echo $formatter->format(new Java('java.util.Date'));
?>
/usr/local/php/lib/php.ini
register_globals=On
[Java]
java.class.path=/usr/local/php/lib/php/php_java.jar:/home/jim/myclass
java.home=/usr/java/j2sdk1.4.2_04
java.library=/usr/java/j2sdk1.4.2_04/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=libphp_java.so
注意:
(1).如果你刚刚从以前老版本的PHP转换到新版本,可能会发现你的PHP程序很多都不能用了。别紧张!把register_globals打开就一切正常啦!这是因为老版本的PHP,它的register_globals默认是开着的,而新版本,却把它关了的缘故。
(2)./home/jim/myclass是我存放JAVA组件的路径,你可以根据实际情况修改,但是为了安全起见,可不要放在web目录下哦。