ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>国产福利电影一区二区三区,无圣光视频在线观看,天堂a√中文在线http://www.aygfsteel.com/jnbzwm/category/46212.html在学ä¹?f¨¤n)中成é•?在æ€È»“中进æ­?/description>zh-cnMon, 18 Oct 2010 15:34:11 GMTMon, 18 Oct 2010 15:34:11 GMT60Hessian构徏分布式系¾lŸåº”用[¾l­]http://www.aygfsteel.com/jnbzwm/archive/2010/10/17/335376.htmlRonaldoRonaldoSun, 17 Oct 2010 14:10:00 GMThttp://www.aygfsteel.com/jnbzwm/archive/2010/10/17/335376.htmlhttp://www.aygfsteel.com/jnbzwm/comments/335376.htmlhttp://www.aygfsteel.com/jnbzwm/archive/2010/10/17/335376.html#Feedback0http://www.aygfsteel.com/jnbzwm/comments/commentRss/335376.htmlhttp://www.aygfsteel.com/jnbzwm/services/trackbacks/335376.html本文为原创,‹Æ¢è¿Žè½¬è²åQŒè{载请注明出处BlogJavaã€?br />
在上一½‹?Hessian构徏分布式系¾lŸåº”ç”?/a> çš„基¼‹€ä¸Šï¼Œæˆ‘们对程序进行改˜q›ã€?br /> 现在有以下比较突出的问题åQ?br /> a.如果hessian服务端我要做的业务很多,怎么办?
我要定义很多个接口,然后再写实现¾c»ï¼Œæœ€çƒ¦çš„æ˜¯è¿˜è¦é…¾|®å®ƒã€?br /> 我的设想是,hessian服务只提供一个归口,再此对外的接口实çŽîC¸­åå°„调用具体的业务类ã€?/p>

b.客户端在调用æ—Óž¼Œæ¯æ¬¡è°ƒç”¨˜qœç¨‹æŽ¥å£éƒ½è¦ç”¨ä»¥ä¸‹ä»£ç å—åQ?/p>

String url = "http://localhost:8080/HessianService/remote/service";
HessianProxyFactory factory 
= new HessianProxyFactory();
ServiceRemote rmt 
= (ServiceRemote) factory.create(ServiceRemote.class, url);


昄¡„¶æ˜¯ä¸éœ€è¦çš„ã€?br /> 我们可以通过加入¾~“存的方式对其进行改良,我们也可以通过Spring在客æˆïL(f¨¥ng)«¯½Ž¡ç†å®ƒã€?/p>

一、完善hessian服务端实玎ͼš
1.首先修改ServiceRemote接口åQ?/p>

package com.al;

import java.util.Map;

@SuppressWarnings(
"unchecked")
public interface ServiceRemote  {
    
public Map callService(String target, Map inputMap) throws Exception;
}

callService为统一入口åQŒåœ¨æ­¤åšå¦‚下¾U¦å®šåQ?br /> 1)targetå­—ç¬¦ä¸²äØ“è¦è°ƒç”¨çš„service的完整类路径+要调用的æ–ÒŽ(gu¨©)³•ã€?br /> 2)service的方法均用以下方法签名:
public Map ***(Map inputMap);
入参为MapåQŒè¿”回å€ég¹Ÿä¸ºMapåQŒåŸºæœ¬å¯ä»¥æ»¡­‘Ïx‰€æœ‰æƒ…况了。(臛_°‘入参为MapåQŒå¾ˆé€‚合调用iBatis来对DB˜q›è¡Œæ“ä½œã€‚)

2.修改接口实现¾c»ServiceåQŒæ­¤¾cÖM¸åšå…·ä½“业务,而是反射调用具体业务¾c»ï¼š

package com.al;

import java.lang.reflect.Method;
import java.util.Map;

import org.apache.commons.beanutils.MethodUtils;
import org.apache.commons.lang.StringUtils;

@SuppressWarnings(
"unchecked")
public class Service implements ServiceRemote {

    
public Map callService(String target, Map inputMap) throws Exception {
        String className 
= StringUtils.substringBeforeLast(target, ".");
        String methodName 
= StringUtils.substringAfterLast(target, ".");
        Class serviceClass 
= loadClass(className);
        Method method 
= getMethod(serviceClass, methodName, Map.class);
        
// æä¾›è®‰K—®æ•ˆçއ
        method.setAccessible(true);
 
// è°ƒç”¨å…·ä½“业务¾c?/span>
        return (Map) method.invoke(serviceClass.newInstance(), inputMap);
    }

    
    
private static <T> Class<T> loadClass(String className) throws ClassNotFoundException {
            
return (Class<T>) getClassLoader().loadClass(className);
    }

    
    
private static ClassLoader getClassLoader() {
        
return Thread.currentThread().getContextClassLoader();
    }

    
    
private static Method getMethod(Class<?> cls, String name, Class<?> parameterTypes) {
        
return MethodUtils.getAccessibleMethod(cls, name, parameterTypes);
    }

}

 

3.举个例子åQŒæœåŠ¡ç«¯æä¾›ä¸šåŠ¡¾c»DisplayUserService.java

package com.al.service;

import java.util.HashMap;
import java.util.Map;

@SuppressWarnings(
"unchecked")
public class DisplayUserService {
    
public static final String selectUsers = "com.al.service.DisplayUserService.selectUsers";
    
public static final String deleteUser = "com.al.service.DisplayUserService.deleteUser";
    
    
public Map selectUsers(Map inputMap) {
        Map ret 
= new HashMap();
        
// æ•°æ®åº“操作取得用户列è¡?nbsp;省略
        ret.put("User""User");
        
return ret;
    }

    
    
public Map deleteUser(Map inputMap) {
        
// æ•°æ®åº“操作取得用户列è¡?nbsp;省略
        return null;
    }

}


所有其他配¾|®ä¸å˜ï¼Œè¯·å‚考上一½‹?
Hessian构徏分布式系¾lŸåº”ç”?/a> ã€?/p>


二、客æˆïL(f¨¥ng)«¯ä»£ç çš„修改:
1.加入spring˜q›è¡Œ½Ž¡ç†åQ?br /> application.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    
<bean id="serviceRemote" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
        
<property name="serviceUrl" value="http://localhost:8080/HessianService/remote/service" />
        
<property name="serviceInterface" value="com.al.ServiceRemote" />
    
</bean>
</beans>

 

2.客户端如下调用即可:

package com.ai.client;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.al.ServiceRemote;
import com.al.service.DisplayUserService;

public class ClientTest {
    
public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext cxt 
= new ClassPathXmlApplicationContext("application.xml");
        ServiceRemote rmt 
= (ServiceRemote)cxt.getBean("serviceRemote");
        System.out.println(rmt.callService(DisplayUserService.selectUsers, 
null));
    }

}


另外一¿Uæ–¹æ³•是自己实现¾~“å­˜ã€?br /> 也就是第一‹Æ¡è°ƒç”¨è¿œ½E‹ä»£ç æ—¶ç”ŸæˆServiceRemote对象åQŒå°†å…¶ä¿å­˜åœ¨é™æ€çš„容器(HashMap)中,
每次准备调用此远½E‹ä»£ç æ—¶åQŒå…ˆåˆ¤æ–­å®¹å™¨ä¸­æ˜¯å¦æœ‰ServiceRemote对象åQŒæœ‰åˆ™ç›´æŽ¥å°†å…¶å–å‡ºåÆˆä½¿ç”¨å›_¯åQŒè¦æ³¨æ„çš„就是在˜q™ä¸ªå®¹å™¨ä¸Šçš„同步问题ã€?br /> 具体实现ž®×ƒ¸åšäº†åQŒå¾ˆ½Ž€å•ã€?/p>

在项目中åQŒå¯¹äºŽå®¢æˆïL(f¨¥ng)«¯ä»£ç æ¥è®²åQŒè¿˜æ˜¯æœ‰è®¸å¤šå·¥ä½œè¦åšçš„:
1) 如果我们要调用多个远½E‹æœåŠ¡æ€Žä¹ˆåŠžï¼Ÿ
我们要提供一个统一调用åQŒå°†˜qœç¨‹è°ƒç”¨çš„动作封装è“v来,让ä‹É用的äºÞZ¸çŸ¥é“自己调用了不同的˜qœç¨‹æœåŠ¡ã€?br /> 只要调用某个æ–ÒŽ(gu¨©)³•、传入参数即可ã€?/p>

2) 如何方便开发员调试˜qœç¨‹çš„æœåŠ¡ä»£ç ï¼Ÿ
在做分布式系¾lŸå¼€å‘的时候,如果每修改一下应用层的serviceåQŒå°±è¦å¯¹å…¶è¿›è¡Œå‘布,然后再去调用看是否已OKåQŒé‚£æ•ˆçŽ‡ä¼šå¾ˆä½Žã€?/p>

3) 如何½Ž¡ç†å¤šæ–¹è°ƒç”¨çš„远½E‹æœåŠ¡ï¼Ÿ

4) 如何提高˜qœç¨‹è°ƒç”¨çš„æ•ˆçŽ‡ï¼Ÿ
是否可以通过å¯?对象˜q›è¡Œ¾~“存、方法是否也可以¾~“å­˜åQŸç”šè‡Ïx˜¯å¯¹è°ƒç”¨ç»“果进行缓存?

5) ½{‰ç­‰..
˜q™äº›åœ¨å…·ä½“çš„™å¹ç›®ä¸­éƒ½æ˜¯ä¸å¾—不考虑的问题。以后再慢慢讨论吧ã€?/p>

]]>
Hessian构徏分布式系¾lŸåº”ç”?/title><link>http://www.aygfsteel.com/jnbzwm/archive/2010/10/17/335371.html</link><dc:creator>Ronaldo</dc:creator><author>Ronaldo</author><pubDate>Sun, 17 Oct 2010 13:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/jnbzwm/archive/2010/10/17/335371.html</guid><wfw:comment>http://www.aygfsteel.com/jnbzwm/comments/335371.html</wfw:comment><comments>http://www.aygfsteel.com/jnbzwm/archive/2010/10/17/335371.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jnbzwm/comments/commentRss/335371.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jnbzwm/services/trackbacks/335371.html</trackback:ping><description><![CDATA[本文为原创,‹Æ¢è¿Žè½¬è²åQŒè{载请注明出处<a title="BlogJava" href="http://www.aygfsteel.com/jnbzwm/">BlogJava</a>ã€?br /> <br /> <p>Hessian是一个轻量çñ”çš„remoting onhttp工具åQŒä‹É用简单的æ–ÒŽ(gu¨©)³•提供了RMI的功èƒ? 相比WebServiceåQŒHessian更简单、快捗÷€?br /> 采用的是二进制RPC协议åQŒå› ä¸ºé‡‡ç”¨çš„æ˜¯äºŒ˜q›åˆ¶åè®®åQŒæ‰€ä»¥å®ƒå¾ˆé€‚合于发送二˜q›åˆ¶æ•°æ®ã€?/p> <p>本文ž®†åˆ†ä¸ÞZ»¥ä¸‹å‡ ä¸ªå†…容:<br /> 一、一个简单的Hessian调用例子<br /> 二、Spring+Hessian的例å­?br /> 三、ä‹É我们的调用变得通用</p> <p>½W¬ä¸€éƒ¨åˆ†åQšä¸€ä¸ªç®€å•çš„Hessian调用例子<br /> 建立web工程HessianServiceã€?br /> ˜q™é‡Œä¸ÞZº†½Ž€å•è“v见,我将˜qœç¨‹æŽ¥å£¾c…R€æŽ¥å£å®žçŽ°ç±»éƒ½å®šä¹‰åœ¨æ­¤web工程下ã€?/p> <p>个äh觉得一个比较好的做法是ž®†web工程分开åQŒæ­¤web工程只定义对外的接口òq¶æä¾›æœåŠ¡ï¼Œè€Œå®žçŽ°ç±»æ–°å¾ä¸€ä¸ªJava工程存放ã€?br /> ˜q™æ ·web工程依赖此Java工程åQŒä¸”客户端也依赖此Java工程ã€?/p> <p>1) ˜qœç¨‹æŽ¥å£¾c?ServiceRemote.java</p> <p> </p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000"> com.al;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Map;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />@SuppressWarnings(</span><span style="color: #000000">"</span><span style="color: #000000">unchecked</span><span style="color: #000000">"</span><span style="color: #000000">)<br /> <img id="Codehighlighter1_103_148_Open_Image" onclick="this.style.display='none'; Codehighlighter1_103_148_Open_Text.style.display='none'; Codehighlighter1_103_148_Closed_Image.style.display='inline'; Codehighlighter1_103_148_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_103_148_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_103_148_Closed_Text.style.display='none'; Codehighlighter1_103_148_Open_Image.style.display='inline'; Codehighlighter1_103_148_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">interface</span><span style="color: #000000"> ServiceRemote  </span><span id="Codehighlighter1_103_148_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_103_148_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> Map callService(Map inputMap) ;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div> <p><br /> 2) 实现¾c?Service.java</p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000"> com.al;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.HashMap;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Map;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />@SuppressWarnings(</span><span style="color: #000000">"</span><span style="color: #000000">unchecked</span><span style="color: #000000">"</span><span style="color: #000000">)<br /> <img id="Codehighlighter1_143_379_Open_Image" onclick="this.style.display='none'; Codehighlighter1_143_379_Open_Text.style.display='none'; Codehighlighter1_143_379_Closed_Image.style.display='inline'; Codehighlighter1_143_379_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_143_379_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_143_379_Closed_Text.style.display='none'; Codehighlighter1_143_379_Open_Image.style.display='inline'; Codehighlighter1_143_379_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Service </span><span style="color: #0000ff">implements</span><span style="color: #000000"> ServiceRemote </span><span id="Codehighlighter1_143_379_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_143_379_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /> <img id="Codehighlighter1_187_377_Open_Image" onclick="this.style.display='none'; Codehighlighter1_187_377_Open_Text.style.display='none'; Codehighlighter1_187_377_Closed_Image.style.display='inline'; Codehighlighter1_187_377_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_187_377_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_187_377_Closed_Text.style.display='none'; Codehighlighter1_187_377_Open_Image.style.display='inline'; Codehighlighter1_187_377_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> Map callService(Map inputMap) </span><span id="Codehighlighter1_187_377_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_187_377_Open_Text"><span style="color: #000000">{<br /> <img id="Codehighlighter1_218_266_Open_Image" onclick="this.style.display='none'; Codehighlighter1_218_266_Open_Text.style.display='none'; Codehighlighter1_218_266_Closed_Image.style.display='inline'; Codehighlighter1_218_266_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_218_266_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_218_266_Closed_Text.style.display='none'; Codehighlighter1_218_266_Open_Image.style.display='inline'; Codehighlighter1_218_266_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="color: #0000ff">if</span><span style="color: #000000">(inputMap </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">) </span><span id="Codehighlighter1_218_266_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_218_266_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />            inputMap </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HashMap();<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #008000">//</span><span style="color: #008000"> do something<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #008000">//</span><span style="color: #008000"> <img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span style="color: #008000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">        inputMap.put(</span><span style="color: #000000">"</span><span style="color: #000000">NAME</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">Hessian</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> inputMap;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div> <p><br /> 3) web.xml配置</p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff"><?</span><span style="color: #ff00ff">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000ff">?></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff"><</span><span style="color: #800000">web-app </span><span style="color: #ff0000">version</span><span style="color: #0000ff">="2.5"</span><span style="color: #ff0000"> xmlns</span><span style="color: #0000ff">="http://java.sun.com/xml/ns/javaee"</span><span style="color: #ff0000"> xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    xsi:schemaLocation</span><span style="color: #0000ff">="http://java.sun.com/xml/ns/javaee <br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span><span style="color: #000000">hessianService</span><span style="color: #0000ff"></</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">></span><span style="color: #000000">com.caucho.hessian.server.HessianServlet</span><span style="color: #0000ff"></</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">init-param</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="color: #0000ff"><</span><span style="color: #800000">param-name</span><span style="color: #0000ff">></span><span style="color: #000000">service-class</span><span style="color: #0000ff"></</span><span style="color: #800000">param-name</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="color: #0000ff"><</span><span style="color: #800000">param-value</span><span style="color: #0000ff">></span><span style="color: #000000">com.al.Service</span><span style="color: #0000ff"></</span><span style="color: #800000">param-value</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"></</span><span style="color: #800000">init-param</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">servlet</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span><span style="color: #000000">hessianService</span><span style="color: #0000ff"></</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">></span><span style="color: #000000">/hessianService</span><span style="color: #0000ff"></</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff"></</span><span style="color: #800000">web-app</span><span style="color: #0000ff">></span></div> <p><br /> ¾lè¿‡ä»¥ä¸Š3步,hessian服务部çÖv½Ž—是完成了,在tomcat下发布ã€?/p> <p>4) 调用方代ç ?/p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000"> com.ai.client;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> com.al.ServiceRemote;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> com.caucho.hessian.client.HessianProxyFactory;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /> <img id="Codehighlighter1_132_480_Open_Image" onclick="this.style.display='none'; Codehighlighter1_132_480_Open_Text.style.display='none'; Codehighlighter1_132_480_Closed_Image.style.display='inline'; Codehighlighter1_132_480_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_132_480_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_132_480_Closed_Text.style.display='none'; Codehighlighter1_132_480_Open_Image.style.display='inline'; Codehighlighter1_132_480_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> ClientTest </span><span id="Codehighlighter1_132_480_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_132_480_Open_Text"><span style="color: #000000">{<br /> <img id="Codehighlighter1_194_478_Open_Image" onclick="this.style.display='none'; Codehighlighter1_194_478_Open_Text.style.display='none'; Codehighlighter1_194_478_Closed_Image.style.display='inline'; Codehighlighter1_194_478_Closed_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_194_478_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_194_478_Closed_Text.style.display='none'; Codehighlighter1_194_478_Open_Image.style.display='inline'; Codehighlighter1_194_478_Open_Text.style.display='inline';" alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> Exception </span><span id="Codehighlighter1_194_478_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_194_478_Open_Text"><span style="color: #000000">{<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        String url </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">http://localhost:8080/HessianService/hessianService</span><span style="color: #000000">"</span><span style="color: #000000">;<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        HessianProxyFactory factory </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> HessianProxyFactory();<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        ServiceRemote rmt </span><span style="color: #000000">=</span><span style="color: #000000"> (ServiceRemote) factory.create(ServiceRemote.</span><span style="color: #0000ff">class</span><span style="color: #000000">, url);<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(rmt.callService(</span><span style="color: #0000ff">null</span><span style="color: #000000">));<br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div> <p><br /> 执行代码åQŒç»“果如下:<br /> {NAME=Hessian}<br /> 说明调用˜qœç¨‹ä»£ç æˆåŠŸäº†ã€?/p> <p>二、Spring+Hessian的例å­?br /> 1) web工程HessianService çš„ServiceRemote å’ŒService¾cÖM¸å˜ã€‚对web.xml˜q›è¡Œä¿®æ”¹åQ?br /> </p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff"><?</span><span style="color: #ff00ff">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000ff">?></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff"><</span><span style="color: #800000">web-app </span><span style="color: #ff0000">version</span><span style="color: #0000ff">="2.5"</span><span style="color: #ff0000"> xmlns</span><span style="color: #0000ff">="http://java.sun.com/xml/ns/javaee"</span><span style="color: #ff0000"> xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    xsi:schemaLocation</span><span style="color: #0000ff">="http://java.sun.com/xml/ns/javaee <br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">context-param</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">param-name</span><span style="color: #0000ff">></span><span style="color: #000000">contextConfigLocation</span><span style="color: #0000ff"></</span><span style="color: #800000">param-name</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">param-value</span><span style="color: #0000ff">></span><span style="color: #000000">/WEB-INF/dispatcher-servlet.xml</span><span style="color: #0000ff"></</span><span style="color: #800000">param-value</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">context-param</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span><span style="color: #000000">dispatcher</span><span style="color: #0000ff"></</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">></span><span style="color: #000000">org.springframework.web.servlet.DispatcherServlet</span><span style="color: #0000ff"></</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">></span><span style="color: #000000">1</span><span style="color: #0000ff"></</span><span style="color: #800000">load-on-startup</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">servlet</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span><span style="color: #000000">dispatcher</span><span style="color: #0000ff"></</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">></span><span style="color: #000000">/remote/*</span><span style="color: #0000ff"></</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">welcome-file-list</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span><span style="color: #000000">index.jsp</span><span style="color: #0000ff"></</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">welcome-file-list</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff"></</span><span style="color: #800000">web-app</span><span style="color: #0000ff">></span></div> <p><br /> ˜q™é‡Œè¦æ³¨æ„çš„æ˜?<br /> a)dispatcher-servlet.xml˜q™ä¸ªæ–‡äšg的命名。servlet配置为dispatcheråQŒåˆ™æ­¤æ–‡ä»¶å®šä¹‰è§„åˆ™äØ“****-servlet.xml.<br /> <br /> b)另外ž®±æ˜¯Springå’Œhessian的版本问题ã€?br /> spring版本æ˜?.5.6åQŒéœ€è¦åœ¨æ­¤web工程下引入:spring-2.5.6.jar、spring-webmvc-2.5.6.jar、commons-logging-1.1.1.jarã€?br /> hessian的版本是hessian-3.1.6.jaråQŒhessian的低版本å¦?hessian-3.0.13和此Spring版本不合。(我试验了是配¾|®ä¸æˆåŠŸçš„ã€‚ï¼‰</p> <p>2) dispatcher-servlet.xml<br /> </p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff"><?</span><span style="color: #ff00ff">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000ff">?></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff"><!</span><span style="color: #ff00ff">DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff"><</span><span style="color: #800000">beans</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">description</span><span style="color: #0000ff">></span><span style="color: #000000">hessian server properties</span><span style="color: #0000ff"></</span><span style="color: #800000">description</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">bean </span><span style="color: #ff0000">id</span><span style="color: #0000ff">="serviceImpl"</span><span style="color: #ff0000"> class</span><span style="color: #0000ff">="com.al.Service"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">bean </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="/service"</span><span style="color: #ff0000"> class</span><span style="color: #0000ff">="org.springframework.remoting.caucho.HessianServiceExporter"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">property </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="service"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="color: #0000ff"><</span><span style="color: #800000">ref </span><span style="color: #ff0000">bean</span><span style="color: #0000ff">="serviceImpl"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"></</span><span style="color: #800000">property</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">property </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="serviceInterface"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="color: #0000ff"><</span><span style="color: #800000">value</span><span style="color: #0000ff">></span><span style="color: #000000">com.al.ServiceRemote</span><span style="color: #0000ff"></</span><span style="color: #800000">value</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="color: #0000ff"></</span><span style="color: #800000">property</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">bean</span><span style="color: #0000ff">></span><span style="color: #000000"><br /> <img alt="" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff"></</span><span style="color: #800000">beans</span><span style="color: #0000ff">></span></div> <p><br /> 3) 客户端代码可以保持原样不变,把调用hessian服务的url变换一下即可:<br /> http://localhost:8080/HessianService/remote/service<br /> http://IP:port/发布工程å?web.xml中配¾|®çš„url-pattern/****-servlet.xml beançš„IDã€?/p> <p>三、ä‹É我们的调用变得通用 ž®†åœ¨ä¸‹ä¸€½‹‡ä¸­ä»‹ç»ã€?/p> <img src ="http://www.aygfsteel.com/jnbzwm/aggbug/335371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jnbzwm/" target="_blank">Ronaldo</a> 2010-10-17 21:11 <a href="http://www.aygfsteel.com/jnbzwm/archive/2010/10/17/335371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java实现数据库连接池http://www.aygfsteel.com/jnbzwm/archive/2010/09/01/330542.htmlRonaldoRonaldoWed, 01 Sep 2010 03:36:00 GMThttp://www.aygfsteel.com/jnbzwm/archive/2010/09/01/330542.htmlhttp://www.aygfsteel.com/jnbzwm/comments/330542.htmlhttp://www.aygfsteel.com/jnbzwm/archive/2010/09/01/330542.html#Feedback0http://www.aygfsteel.com/jnbzwm/comments/commentRss/330542.htmlhttp://www.aygfsteel.com/jnbzwm/services/trackbacks/330542.html阅读全文

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ³¤ÁëÏØ| ÀÖ²ýÊÐ| ÔúêãÌØÆì| ÁÉÑôÊÐ| Ë³Æ½ÏØ| Õê·áÏØ| ÎèÑôÏØ| ÆÖ½­ÏØ| ÐÂÉÛÏØ| ´óÀóÏØ| µ±ÑôÊÐ| ÎͰ²ÏØ| ÇìÑôÊÐ| ¿â¶ûÀÕÊÐ| Î÷ÎÚ| ·ÚÑôÊÐ| ¸§Ë³ÊÐ| ¶«ÁÉÏØ| ÂåÆÖÏØ| ÇúË®ÏØ| Í©³ÇÊÐ| ËÞǨÊÐ| ¹Ì°²ÏØ| Îñ´¨| ººÊÙÏØ| ÁÙº£ÊÐ| ´¾»¯ÏØ| ÒåÎÚÊÐ| »ªÍ¤ÏØ| ¼ÎÒñÏØ| ÉñÅ©¼ÜÁÖÇø| ºâÑôÏØ| ·±ÖÅÏØ| ãä½­ÊÐ| Óý¶ù| ¸£°²ÊÐ| ÄôÀ­Ä¾ÏØ| ¾°¹È| ËÄÆ½ÊÐ| ÀÖÆ½ÊÐ| ÕþºÍÏØ|