涓€銆佽儗鏅?
聽聽聽聽聽 闅忕潃缃戠珯璁塊棶閲忓鍔狅紝浠呬粎闈犲鍔犳満鍣ㄥ凡涓嶈兘婊¤凍绯葷粺鐨勮姹傦紝浜庢槸闇€瑕佸搴旂敤绯葷粺杩涜鍨傜洿鎷嗗垎鍜屾按骞蟲媶鍒嗐€傚湪鎷嗗垎涔嬪悗锛屽悇涓鎷嗗垎鐨勬ā鍧楀浣曢€氫俊锛熷浣曚繚璇佹€ц兘锛熷浣曚繚璇佸悇涓簲鐢ㄩ兘浠ュ悓鏍風殑鏂瑰紡浜や簰锛熻繖灏遍渶瑕佷竴绉嶈礋璐e悇涓媶鍒嗙殑妯″潡闂撮€氫俊鐨勯珮鎬ц兘鏈嶅姟妗嗘灦(HSF)銆?
浜屻€丠SF鍋氱殑浜嬫儏
聽
1. 鏍囧噯Service鏂瑰紡鐨凴PC
聽聽聽 1锛? service瀹氫箟锛氬熀浜嶰SGI鐨剆ervice瀹氫箟鏂瑰紡
聽聽聽 2锛? TCP/IP閫氫俊锛?
聽聽聽聽聽聽聽聽聽聽 IO鏂瑰紡锛歯io,閲囩敤mina妗嗘灦
聽聽聽聽聽聽聽聽聽聽 杩炴帴鏂瑰紡锛氶暱杩炴帴
聽聽聽聽聽聽聽聽聽聽 鏈嶅姟鍣ㄧ鏈夐檺瀹氬ぇ灏忕殑杩炴帴姹?
聽聽聽聽聽聽聽聽聽聽 WebService鏂瑰紡
聽聽聽 3锛? 搴忓垪鍖栵細hessian搴忓垪鍖栨満鍒?
2. 杞歡璐熻澆浣撶郴
聽聽聽 閲囩敤杞歡瀹炵幇璐熻澆鍧囪 锛屾敮鎸侀殢鏈恒€佽疆璇€佹潈閲嶃€佹寜搴旂敤璺敱绛夋柟寮忋€傝蔣浠惰礋杞藉潎琛℃病鏈変腑闂寸偣锛岄€氳繃閰嶇疆涓績缁熶竴绠$悊銆傞厤缃腑蹇冩敹闆嗘湇鍔℃彁渚涜€呭拰娑堣垂鑰呯殑娉ㄥ唽淇℃伅锛屼互鎺ㄩ€佺殑鏂瑰紡鍙戦€佸埌鏈嶅姟娑堣垂鑰呯洿鎺ヤ嬌鐢紝涓嶇粡杩囦腑闂寸偣锛涙敞鍐屼腑蹇冨彲浠ユ劅搴旀湇鍔″櫒鐨勭姸鎬侊紝鍑虹幇failover鏃訛紝瀹炵幇娉ㄥ唽淇℃伅閲嶆柊鎺ㄩ€併€?
3. 妯″潡鍖栥€佸姩鎬佸寲
4. 鏈嶅姟娌葷悊
聽聽聽 鏈嶅姟娌葷悊鍒╃敤娉ㄥ唽涓績瀹炵幇鏈嶅姟淇℃伅绠$悊锛堟湇鍔℃彁渚涜€呫€佽皟鐢ㄨ€呬俊鎭煡璇級銆佹湇鍔′緷璧栧叧绯誨垎鏋愩€佹湇鍔¤繍琛岀姸鍐墊劅鐭ャ€佹湇鍔″彲鐢ㄦ€т繚闅滐紝濡傦細璺敱璋冩暣銆佹祦閲忓垎閰嶃€佹湇鍔$闄嶇駭銆佽皟鐢ㄧ闄嶇駭绛?
聽
鏈枃鏉ヨ嚜CSDN鍗氬锛岃漿杞借鏍囨槑鍑哄锛歨ttp://blog.csdn.net/marine2010/archive/2010/03/21/5401366.aspx
涓夈€佸簲鐢?
鑳屾櫙: WEBX -- 闃塊噷宸村反缃戠珯鎵€閲囩敤鐨刉EB搴旂敤妗嗘灦.
HSF鎺ュ彛: com.taobao.item.service.ItemQueryService
闇€姹? 鏍規嵁鍟嗗搧ID鍙栧緱鍟嗗搧淇℃伅
杞戒綋: TBCMS绯葷粺
瀹炵幇姝ラ:
1. 鍒涘緩 /bundle/war/src/webroot/META-INF/autoconf/item-hsf-xml.vm
浠g爜:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="itemQueryService" class="com.taobao.hsf.app.spring.util.HSFSpringConsumerBean" init-method="init">
<property name="interfaceName">
<value>com.taobao.item.service.ItemQueryService</value>
</property>
<property name="version">
<value>${item_provide_service_version}</value>
</property>
<!--asyncallMethods涓哄彲閫夐厤缃甗List]锛屽惈涔変負璋冪敤姝ゆ湇鍔℃椂闇€瑕侀噰鐢ㄥ紓姝ヨ皟鐢ㄧ殑鏂規硶鍚嶅垪琛紝榛樿涓虹┖闆嗗悎锛屽嵆鎵€鏈夋柟娉曢兘閲囩敤鍚屾璋冪敤-->
<property name="asyncallMethods">
<list>
</list>
</property>
</bean>
</beans>
2.鍏朵腑:聽${item_provide_service_version} 闇€瑕佸湪 auto-config.xml 涓厤缃?鍦?<group name="arkcms-bundle-war"> ...</group>涓鍔?
<property name="item.provide.service.version" defaultValue="1.0.0.daily" desc="itemClient璋冪敤鐗堟湰"/>
鍚屾椂鍦?<script>...</script>涓鍔?
<generate template="item-hsf.xml.vm" destfile="WEB-INF/biz/bean/item-hsf.xml" charset="GBK"/>
3.鍦?bundle/war/src/webroot/WEB-INF/cms-biz-services.xml涓鍔?
<service name="BeanFactoryService" class="com.alibaba.service.spring.DefaultBeanFactoryService">
<property name="bean.descriptors">
....................
<value>/cms/biz/bean/item-hsf.xml</value>
</property>
</service>
鑷蟲,鎴戜滑宸茬粡寮曞叆浜咺temQueryService鐨凥SF鏈嶅姟.
4. 鎺ヤ笅鏉ユ垜浠氨瑕佸仛Servlet鎺ュ彛浜?褰撶劧鍐欎竴涓猻ervlet鐩存帴璋冪敤hsf涔熸槸鍙互鐨?浣嗘槸浠庣粨鏋勮€冭檻,鎴戜滑杩樻槸鍏堟湰鍦闆皝瑁呬竴灞傚厛.
浣嗘槸棣栧厛,闇€瑕佸 /all/project.xml 涓渶瑕佸鍔犲ItemQueryService鐨勬敮鎸?
<projects name="taobao/itemcenter" version="1.9.5">
<project id="taobao/itemcenter/itemcenter-client"/>
<project id="taobao/itemcenter/itemcenter-common"/>
</projects>
骞跺湪/biz/project.xml鍜?web/project.xml涓鍔?
<?xml version="1.0" encoding="GB2312"?>
<project id="tbcms/web" extends="../all/project.xml">
<build>
<dependencies>
............
<include uri="taobao/itemcenter/itemcenter-client"/>
<include uri="taobao/itemcenter/itemcenter-common"/>
</dependencies>
</build>
</project>
鍛戒護琛屾ā寮忎笅鎵ц:antx reactor goals=eclipse鏉ユ墽琛屽渚濊禆鍖呯殑瑁呰澆.(鍓嶆彁鏄/antx/repository.project/taobao/itemcenter/杩涜SVN鏇存柊)
鏈湴灏佽: 鍦?biz/src/java/com/ark/cms/biz/util/item/涓嬪垱寤篒temService.java鎺ュ彛:
package com.ark.cms.biz.util.item;
import com.taobao.item.domain.DbRoute;
import com.taobao.item.domain.query.ItemIdDO;
import com.taobao.item.domain.result.ItemResultDO;
import com.taobao.item.exception.IcException;
/**
* 鏍規嵁id鍙栧緱鍟嗗搧淇℃伅
* @author duxing
*
*/
public interface ItemService {
public ItemResultDO getItemById(ItemIdDO itemId,DbRoute mainDbRoute) throws IcException;
}
鍦╞iz/src/java/com/ark/cms/biz/util/item/impl/涓?ItemServiceImpl.java杩涜瀹炵幇:
package com.ark.cms.biz.util.item.impl;
import com.ark.cms.biz.util.item.ItemService;
import com.taobao.item.domain.DbRoute;
import com.taobao.item.domain.query.ItemIdDO;
import com.taobao.item.domain.query.QueryItemOptionsDO;
import com.taobao.item.domain.result.ItemResultDO;
import com.taobao.item.exception.IcException;
import com.taobao.item.service.ItemQueryService;
/**
* 鏍規嵁id鍙栧緱鍟嗗搧淇℃伅 瀹炵幇
* @author duxing
*
*/
public class ItemServiceImpl implements ItemService {
private ItemQueryService itemQueryService;
public void setItemQueryService(ItemQueryService itemQueryService) {
this.itemQueryService = itemQueryService;
}
@SuppressWarnings("deprecation")
public ItemResultDO getItemById(ItemIdDO itemId, DbRoute mainDbRoute) throws IcException {
QueryItemOptionsDO options = null;
return itemQueryService.queryItemById(itemId, options, mainDbRoute);
}
}
鐒跺悗灏嗘鎺ュ彛绉諱氦缁檚pring,鍦?bundle/war/src/webroot/META-INF/autoconf/item-hsf-xml.vm涓鍔?锛?
<bean id="itemService" class="com.ark.cms.biz.util.item.impl.ItemServiceImpl"></bean>
鑷蟲,鎴戜滑宸茬粡鍦╯pring涓駭鐢熶竴涓猧temService
5.鎺ヤ笅鏉ュ垱寤簊ervlet
鍦?web/src/java/com/ark/cms/web/涓嬪垱寤篒temServiceServlet.java
鍥犱負servlet涓笉鑳界洿鎺ョ敤set褰㈠紡璁﹕pring鏉et itemService杩涙潵,鎵€浠ュ彧鑳介噰鐢ㄤ竴涓嬫柟娉曡幏鍙杋temService:
BeanFactoryService beanFactory = (BeanFactoryService) BizServiceManager.getInstance().getService(BeanFactoryService.SERVICE_NAME);
ItemService itemService = (ItemService) beanFactory.getBean("itemService");
瀹屾暣浠g爜濡備笅:
package com.ark.cms.web;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.service.spring.BeanFactoryService;
import com.ark.cms.biz.core.BizServiceManager;
import com.ark.cms.biz.util.item.ItemService;
import com.taobao.item.domain.DbRoute;
import com.taobao.item.domain.ItemDO;
import com.taobao.item.domain.query.ItemIdDO;
import com.taobao.item.domain.result.ItemResultDO;
import com.taobao.item.exception.IcException;
/**
* 鏍規嵁id鍙栧緱鍟嗗搧澶у浘鐨勬帴鍙? * @author duxing
*
*/
public class ItemServiceServlet extends HttpServlet {
private static final long serialVersionUID = -3348559907279438489L;
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// http://item.taobao.com/auction/item_detail-db1-67af640ba3f16a2006cd63f1f...
// long itemId=4399800173l;
String item_id = request.getParameter("item_id");
String xid = request.getParameter("xid");
DbRoute mainDbRoute=DbRoute.getDbRouteByXid(xid);
ItemIdDO itemIDDO=new ItemIdDO();
if(item_id!=null){
itemIDDO.setItemIdStr(item_id);
}
if(request.getParameter("item_num_id")!=null){
Long item_num_id = Long.valueOf(request.getParameter("item_num_id"));
itemIDDO.setItemId(item_num_id);
}
if(request.getParameter("id")!=null){
Long id = Long.valueOf(request.getParameter("id"));
itemIDDO.setItemId(id);
}
// 涓ょid鐨勪紶鍏ユ柟寮?// itemIDDO.setItemId(itemId);
// itemIDDO.setItemIdStr("67af640ba3f16a2006cd63f1f5dddc271");
ItemResultDO itemResultDO;
BeanFactoryService beanFactory = (BeanFactoryService) BizServiceManager.getInstance().getService(BeanFactoryService.SERVICE_NAME);
ItemService itemService = (ItemService) beanFactory.getBean("itemService");
try {
itemResultDO=itemService.getItemById(itemIDDO, mainDbRoute);
} catch (IcException e) {
e.printStackTrace();
itemResultDO=new ItemResultDO();
}
ItemDO itemDO=itemResultDO.getItem();
byte[] result="".getBytes();
if(itemDO!=null){
result=itemDO.getPictUrl().getBytes();
}
response.setContentType("text/xml;charset=gb2312");
response.setContentLength(result.length);
OutputStream out = response.getOutputStream();
out.write(result);
out.flush();
}
}
6.servlet鍐欏ソ浜嗕箣鍚庢垜浠氨瑕侀厤缃繘WEBX浜?
鍦?/bundle/war/src/webroot/META-INF/autoconf/web.xml.vm涓鍔?
<servlet-mapping>
<servlet-name>ItemServiceServlet</servlet-name>
<url-pattern>/item/query</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ItemServiceServlet</servlet-name>
<servlet-class>com.ark.cms.web.ItemServiceServlet</servlet-class>
</servlet>
7.鑷蟲,寮€鍙戝畬鎴惵?
鍛戒護琛屾ā寮忎笅鎵ц:antx reactor goals=clean,default鏉ュ椤圭洰閲嶆柊缂栬瘧鎵撳寘.閲嶅惎鏈湴鏈嶅姟鍣ㄨ繘琛屾祴璇?
瀵?item/query鎺ュ彛杩涜post鐨勬椂鍊欒Е鍙戞servlet.
鍘熸枃閾炬帴锛歨ttp://www.cnblogs.com/mengheyun/archive/2010/12/16/1963077.html