<?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>IT妖怪 &#187; web服务器</title>
	<atom:link href="http://blog.ityao.com/archives/category/backend/web%e6%9c%8d%e5%8a%a1%e5%99%a8/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.ityao.com</link>
	<description>热爱生活，热爱程序</description>
	<lastBuildDate>Wed, 03 Aug 2011 02:56:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>“先进的互联互通技术”&#8211;使用ice联通php和java [part 1 server]</title>
		<link>http://blog.ityao.com/archives/426</link>
		<comments>http://blog.ityao.com/archives/426#comments</comments>
		<pubDate>Fri, 25 Sep 2009 03:34:10 +0000</pubDate>
		<dc:creator>零蛋</dc:creator>
				<category><![CDATA[JAVA EE]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[web服务器]]></category>
		<category><![CDATA[五四陈科学院]]></category>

		<guid isPermaLink="false">http://blog.ityao.com/?p=426</guid>
		<description><![CDATA[PHP没有中间件，导致了对很多麻烦。比如，对数据库的操作必须要链接数据库，然后做SQL操作。WEB程序直接操作数据库的方法，这样会带来很多人为因素的事故隐患，以及管理上的麻烦，尤其是对大型的网站应用来说。规范的模式应该是，WEB程序传递参数到一个服务程序上，由该服务程序进行判断并最终操作数据库或者其它数据文件，这样做到了明确权限控制，和业务类型集中管理。去年伴随着ICE的推出，PHP终于有了可以使用的中间件。在PHP的发展史上，应该是一个里程碑。 ICE入门 ICE（Internet Communications Engine 网络通讯引擎），是由Corba原核心成员开发的一个开源中间件，据称其各种性能完全优于Corba。除此之外，我们第一次见到了直接支持PHP的中间件。 ICE的安装，去http://www.zeroc.com/download.html 下载一个Ice针对PHP的安装包，按照说明安装上。 ICE的使用：使用Slice（ICE的一种简单语法脚本），编写一个xx.ice文件。可以使用slice2cpp或slice2java等生成一个cpp或java的ICE框架程序，然后在这个框架程序中进行代码编写。ICE在PHP的应用继承了PHP的一贯传统——简单，只需要在php.ini中加载该xx.ice，在PHP中就可以使用了。 ICE在PHP应用中的缺点，无法使用PHP编写Server端，其实这也是PHP的一个缺陷——没有完善的多进程和多线程管理机制。因此，Server端可以采用ICE所支持的其它语言进行编写，比如JAVA/C++/VB/PYTHON等。 开始传说中的“互联互通” 本例以 Ice 3.2.1为例 下载的位置和参考的文档都在下面 http://www.zeroc.com/download_3_2_1.html http://www.zeroc.com/doc/Ice-3.2.1/manual/Slice.5.10.html#50592 ICE其实是一个网络框架，入门说明中说了，PHP不能用来做服务端，在这里我们使用java来做服务端，用php来连java，达到传说中的“互联互通”。 我们的服务端用Linux，客户端也用Linux（纯废话）。JAVA环境的搭建不在表述了。 在下载可以看出来，服务器支持yum或者是rpm是多么幸福的一件事情，或者搞一份tar.gz的包下来configure make make install，大概也就是这样。好了这样子就表示安装结束了。。。 安装之后的Ice相关路径: slice2cpp,slice2java在/usr/bin/下 Ice.jar 存储于 /usr/share/java/下 相关的Ice的库存储于/usr/lib下. 第1步，建立服务器端的demo.ice的文件（注意代码里的半全角，如果是全角自行转成半角）： module Demo{ interface test{ string   execute(string mth,string cmd); }; }; 第2步，执行: slice2java demo.ice 生成一堆文件。。。 第3步，动手干活 上一步执行完会在当前目录产生一个Demo目录,目录下自动生成: -rw-r&#8211;r&#8211;  1 root root 2316  4月 15 17:01 _testDelD.java [...]]]></description>
			<content:encoded><![CDATA[<p>PHP没有中间件，导致了对很多麻烦。比如，对数据库的操作必须要链接数据库，然后做SQL操作。WEB程序直接操作数据库的方法，这样会带来很多人为因素的事故隐患，以及管理上的麻烦，尤其是对大型的网站应用来说。规范的模式应该是，WEB程序传递参数到一个服务程序上，由该服务程序进行判断并最终操作数据库或者其它数据文件，这样做到了明确权限控制，和业务类型集中管理。去年伴随着ICE的推出，<a href="http://www.54chen.com/611-%e5%8e%9f%e5%88%9bdiscuz-bbs%e7%bc%93%e5%ad%98%e6%95%b4%e4%bd%93%e6%96%b9%e6%a1%88/">PHP</a>终于有了可以使用的中间件。在PHP的发展史上，应该是一个里程碑。</p>
<p><span id="more-426"></span></p>
<p><strong>ICE入门</strong></p>
<p>ICE（Internet Communications Engine 网络通讯引擎），是由Corba原核心成员开发的一个开源中间件，据称其各种性能完全优于Corba。除此之外，我们第一次见到了直接支持PHP的中间件。</p>
<p>ICE的安装，去http://www.zeroc.com/download.html 下载一个Ice针对PHP的安装包，按照说明安装上。</p>
<p>ICE的使用：使用Slice（ICE的一种简单语法脚本），编写一个xx.ice文件。可以使用slice2cpp或slice2java等生成一个cpp或java的ICE框架程序，然后在这个框架程序中进行代码编写。ICE在PHP的应用继承了PHP的一贯传统——简单，只需要在php.ini中加载该xx.ice，在PHP中就可以使用了。</p>
<blockquote><p>ICE在PHP应用中的缺点，无法使用PHP编写Server端，其实这也是PHP的一个缺陷——没有完善的多进程和多线程管理机制。因此，Server端可以采用ICE所支持的其它语言进行编写，比如JAVA/C++/VB/PYTHON等。</p></blockquote>
<p><strong>开始传说中的“互联互通”</strong></p>
<blockquote><p><strong><span style="color: #ff0000">本例以 Ice 3.2.1为例 下载的位置和参考的文档都在下面</span></strong></p>
<p><a href="http://www.zeroc.com/download_3_2_1.html">http://www.zeroc.com/download_3_2_1.html</a></p>
<p><a href="http://www.zeroc.com/doc/Ice-3.2.1/manual/Slice.5.10.html#50592">http://www.zeroc.com/doc/Ice-3.2.1/manual/Slice.5.10.html#50592</a></p></blockquote>
<p>ICE其实是一个网络框架，入门说明中说了，PHP不能用来做服务端，在这里我们使用java来做服务端，用php来连java，达到传说中的“互联互通”。</p>
<p>我们的服务端用Linux，客户端也用Linux（纯废话）。JAVA环境的搭建不在表述了。</p>
<p>在下载可以看出来，服务器支持yum或者是rpm是多么幸福的一件事情，或者搞一份tar.gz的包下来configure make make install，大概也就是这样。好了这样子就表示安装结束了。。。</p>
<blockquote><p>安装之后的Ice相关路径:</p>
<p>slice2cpp,slice2java在/usr/bin/下</p>
<p>Ice.jar 存储于 /usr/share/java/下</p>
<p>相关的Ice的库存储于/usr/lib下.</p></blockquote>
<p>第1步，建立<a href="http://www.54chen.com/736-dynamo-based-systems-designed-linkin-voldemort-voldemort-design-chinese-documents-i-am-a-chan-academy-of-sciences-translation-finalized/">服务器</a>端的demo.<span>ice</span>的文件（注意代码里的半全角，如果是全角自行转成半角）：</p>
<blockquote><p>module Demo{</p>
<p>interface test{</p>
<p>string   execute(string mth,string cmd);</p>
<p>};</p>
<p>};</p></blockquote>
<p>第2步，执行: <span>slice2java</span> demo.<span>ice</span> 生成一堆文件。。。</p>
<p>第3步，动手干活</p>
<p>上一步执行完会在当前目录产生一个Demo目录,目录下自动生成:<br />
-rw-r&#8211;r&#8211;  1 root root 2316  4月 15 17:01 _testDelD.java<br />
-rw-r&#8211;r&#8211;  1 root root  560  4月 15 17:01 _testDel.java<br />
-rw-r&#8211;r&#8211;  1 root root 1929  4月 15 17:01 _testDelM.java<br />
-rw-r&#8211;r&#8211;  1 root root 4177  4月 15 17:01 _testDisp.java<br />
-rw-r&#8211;r&#8211;  1 root root 1070  4月 15 17:01 testHolder.java<br />
-rw-r&#8211;r&#8211;  1 root root  488  4月 15 17:01 test.java<br />
-rw-r&#8211;r&#8211;  1 root root  481  4月 15 17:01 _testOperations.java<br />
-rw-r&#8211;r&#8211;  1 root root  460  4月 15 17:01 _testOperationsNC.java<br />
-rw-r&#8211;r&#8211;  1 root root 5418  4月 15 17:01 testPrxHelper.java<br />
-rw-r&#8211;r&#8211;  1 root root  569  4月 15 17:01 testPrxHolder.java<br />
-rw-r&#8211;r&#8211;  1 root root  567  4月 15 17:01 testPrx.java<br />
到目前为止,demo.<span>ice</span>所以<span>Ice</span>接口部分的定义以及相关依赖都已经自动生成.</p>
<p>我们要实现自己的execute方法,覆盖testPrx.java的同名<a href="http://www.54chen.com/272-%e5%a6%82%e4%bd%95%e5%af%b9%e4%bb%98%e6%97%a0%e8%89%af%e6%87%92%e6%83%b0ops%e7%9a%84%e5%8f%af%e8%80%bb%e7%9a%84%e9%99%90%e6%b5%81%e6%8e%aa%e6%96%bd/">方法</a>:</p>
<blockquote><p>//TestImp.java</p>
<p>package Demo;</p>
<p>import Ice.Current;</p>
<p>public class TestImp extends _testDisp{</p>
<p>public String execute(String mth, String cmd, Current __current) {</p>
<p>// TODO Auto-generated method stub</p>
<p>return mth+cmd;</p>
<p>}</p>
<p>}</p></blockquote>
<p>第4步，建立一个Server服务在10000<a href="http://www.54chen.com/264-%e7%94%a8iptables%e5%81%9a%e4%b8%a4%e6%9c%ba%e4%b9%8b%e9%97%b4%e7%9a%84%e7%ab%af%e5%8f%a3%e8%bd%ac%e5%8f%91/">端口</a>进行侦听</p>
<blockquote><p>//Server.java</p>
<p>package Demo;</p>
<p>public class Server {</p>
<p>public static void main(String[] args) {</p>
<p>int status = 0;</p>
<p>Ice.Communicator ic = null;</p>
<p>try {</p>
<p>ic = Ice.Util.initialize(args);</p>
<p>Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints(</p>
<p>&#8220;TestAdapter&#8221;, &#8220;default -p 10000&#8243;);</p>
<p>Ice.Object object = new TestImp();</p>
<p>adapter.add(object, ic.stringToIdentity(&#8220;TestAdapter&#8221;));</p>
<p>adapter.activate();</p>
<p>ic.waitForShutdown();</p>
<p>} catch (Ice.LocalException e) {</p>
<p>e.printStackTrace();</p>
<p>status = 1;</p>
<p>} catch (Exception e) {</p>
<p>System.err.println(e.getMessage());</p>
<p>status = 1;</p>
<p>}</p>
<p>if (ic != null) {</p>
<p>// Clean up</p>
<p>//</p>
<p>try {</p>
<p>ic.destroy();</p>
<p>} catch (Exception e) {</p>
<p>System.err.println(e.getMessage());</p>
<p>status = 1;</p>
<p>}</p>
<p>}</p>
<p>System.exit(status);</p>
<p>}</p>
<p>}</p></blockquote>
<p>以上大部分代码都是框架生成，你只需要在里面填写TODO。把这个代码拖回来用eclipse打成jar包，注意，需要依赖ice.jar这个包，这个包可以在<a href="http://www.54chen.com">官方</a>网站下载到。<a href="http://www.zeroc.com/download_3_2_1.html">http://www.zeroc.com/download_3_2_1.html</a></p>
<p>生成DemoServer.ajr后传到服务器，运行java -cp ./:Ice.jar:DemoServer.jar Demo.Server</p>
<p>运行成功的条件是Ice.jar和DemoServer.jar都在一个目录里。（Ice.jar从下载地址下载）</p>
<p>Server运行之后监听于10000端口，需要修改iptables，允许其他机器可以连接。<br />
编辑 iptables<br />
vi /etc/sysconfig/iptables</p>
<blockquote><p><span>-A RH-Firewall-</span><span>1</span><span>-INPUT -m state &#8211;state NEW -m tcp -p tcp &#8211;dport </span><span>10000</span><span> -j ACCEPT</span></p></blockquote>
<p><strong>继续深入互联互通</strong></p>
<p>这一节完成了Server，一个10000端口的Server在等待着我们用PHP来联通中。下一节，我们将讲述：IcePHP环境的搭建，PHP调用Ice如何与JAVA互联互通，以及一个完整的Demo，保存好本节的代码，后面还有用处。[未完待续]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ityao.com/archives/426/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[五四陈小技巧]全站换域名时利用nginx和javascript做简单友好的换域名跳转通知</title>
		<link>http://blog.ityao.com/archives/114</link>
		<comments>http://blog.ityao.com/archives/114#comments</comments>
		<pubDate>Wed, 09 Sep 2009 08:41:14 +0000</pubDate>
		<dc:creator>零蛋</dc:creator>
				<category><![CDATA[web服务器]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[域名]]></category>

		<guid isPermaLink="false">http://blog.cnflex.org/?p=114</guid>
		<description><![CDATA[在经过上一波的xiaonei.com转renren.com后，昨夜再次迎来新一波的kaixin-&#62;renren code的过程，期间有域名要求用新的域名，并且要老域名有跳转有提示，于是采用了下面的办法。 老域名是 old.com 新域名是 new.com 迁移挂维护的过程就略过了，直接说重点， 第一步，修改nginx.conf，删除原来old.com的定义，增加： server { listen 80; server_name old.com; location / { root   /old; if (!-e $request_filename){ rewrite ^/(.*)?$ /index.html?t=$1 last; } } } 第二步，在/old下放进一个index.html，代码如下： &#60;div&#62; &#60;h1&#62;&#60;span&#62;old换名啦！&#60;/span&#62; &#60;br&#62; 原来old更名为new，请放心不会影响您的使用，新的地址为&#60;a href=&#8221;http://new.com&#8221; id=&#8221;link&#8221;&#62;new.c om&#60;/a&#62;谢谢您的支持！ &#60;/h1&#62; &#60;p&#62; 2秒之后自动跳转到新的地址&#8230; &#60;/p&#62; &#60;/div&#62; &#60;script type=&#8221;text/javascript&#8221;&#62; document.getElementById(&#8220;link&#8221;).href = location.href.replace(&#8220;old.com&#8221;,&#8221;new.com&#8221;); setTimeout(function(){ location.href =  location.href.replace(&#8220;old.com&#8221;,&#8221;new.com&#8221;); }, 2000) &#60;/script&#62; 第三步，关机，回家睡觉]]></description>
			<content:encoded><![CDATA[<p>在经过上一波的xiaonei.com转renren.com后，昨夜再次迎来新一波的kaixin-&gt;renren code的过程，期间有域名要求用新的域名，并且要老域名有跳转有提示，于是采用了下面的办法。<br />
<span id="more-114"></span><br />
老域名是 old.com</p>
<p>新域名是 new.com</p>
<p>迁移挂维护的过程就略过了，直接说重点，</p>
<p>第一步，修改nginx.conf，删除原来old.com的定义，增加：</p>
<blockquote><p>server {<br />
listen 80;<br />
server_name old.com;</p>
<p>location / {<br />
root   /old;<br />
if (!-e $request_filename){<br />
rewrite ^/(.*)?$ /index.html?t=$1 last;<br />
}<br />
}<br />
}</p></blockquote>
<p>第二步，在/old下放进一个index.html，<a href="http://www.54chen.com/576-54%e9%99%88%e7%a7%91%e5%ad%a6%e9%99%a28021x%e6%ba%90%e4%bb%a3%e7%a0%81%e4%b8%8b%e8%bd%bd/">代码</a>如下：</p>
<blockquote><p>&lt;div&gt;</p>
<p>&lt;h1&gt;&lt;span&gt;old换名啦！&lt;/span&gt;<br />
&lt;br&gt;<br />
原来old更名为new，请放心不会影响您的使用，新的地址为&lt;a href=&#8221;http://new.com&#8221; id=&#8221;link&#8221;&gt;new.c<br />
om&lt;/a&gt;谢谢您的支持！<br />
&lt;/h1&gt;<br />
&lt;p&gt;<br />
2秒之后自动跳转到新的地址&#8230;<br />
&lt;/p&gt;<br />
&lt;/div&gt;</p>
<p>&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
document.getElementById(&#8220;link&#8221;).href = location.href.replace(&#8220;old.com&#8221;,&#8221;new.com&#8221;);<br />
setTimeout(function(){<br />
location.href =  location.href.replace(&#8220;old.com&#8221;,&#8221;new.com&#8221;);<br />
}, 2000)<br />
&lt;/script&gt;</p></blockquote>
<p>第三步，关机，回家睡觉</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ityao.com/archives/114/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

