锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鎴戜滑閲囩敤鐨勬柟妗堝涓嬶細(xì)
鍏堢湅鍥?/p>
涓婂浘鐨勬祦紼嬪ぇ鑷翠笂鏄繖鏍風(fēng)殑錛?
鎵嬫満绔悜PC绔彂閫佽亰澶╁唴瀹?
1銆佹墜鏈虹紼嬪簭閫氳繃Socket榪炴帴鏈嶅姟鍣ㄧ鐨凷erverSocket
2銆佺劧鍚庢湇鍔″櫒绔牴鎹墜鏈篗obile瀹㈡埛绔彂閫佽繃鏉ョ粺涓瑙勮寖鐨勬姤鏂囨垨鑱婂ぉ鍐呭錛岃繘琛岃В鏋?
3銆佺劧鍚庡皢瑙f瀽鐨勫唴瀹癸紝鍐嶇敤smack妗嗘灦杞彂鍒皁penfire鏈嶅姟鍣?
4銆佹渶鍚庣敱openfire鏈嶅姟鍣ㄥ悜瀹㈡埛绔紙BS銆丆S銆丳honeClient錛夌▼搴忓彂閫佽亰澶╀俊鎭傝繖閲岀殑瀹㈡埛绔彲浠ユ槸pc涓婄殑嫻忚鍣紝pc涓婄殑妗岄潰搴旂敤錛屾墜鏈哄簲鐢ㄧ瓑
5銆丳C瀹㈡埛绔疊S紼嬪簭錛堢敤http bind鏂瑰紡鐩戝惉錛夌殑闀胯繛鎺ョ洃鍚埌openfire鏈嶅姟鍣ㄥ彂閫佽繃鏉ョ殑鏁版嵁錛岀洿鎺ュ湪欏甸潰涓樉紺?/p>
鍚屾牱錛孭C瀹㈡埛绔悜鎵嬫満绔彂閫佽亰澶╁唴瀹?
1銆丳C瀹㈡埛绔紙BS錛夊彲浠ョ洿鎺ョ敤http bind錛坸mpp 鎻愪緵鐨刪ttp璇鋒眰鐨勯暱榪炴帴鏂瑰紡錛夌洿鎺ュ悜openfire鏈嶅姟鍣ㄥ彂閫佽亰澶╂暟鎹紱
2銆佺劧鍚巓penfire鏈嶅姟鍣ㄦ帴鏀跺埌鑱婂ぉ鍐呭鐨勬椂鍊欙紝榪欐椂鍊檚ocket鏈嶅姟鍣ㄤ腑鐨剆mack妗嗘灦涓湁涓涓亰澶╁唴瀹圭殑鐩戝惉鍣?
3銆佺洃鍚埌PC绔悜openfire鍙戦佺殑鍐呭鍚庯紝浼?xì)鐢╯ocket鐨勬祦鍚戞墜鏈虹鍙戦佹垜浠畾涔夊ソ鐨勬姤鏂囨垨鏄亰澶╁唴瀹?
4銆佹墜鏈虹鐨剆ocket浼?xì)涓嶅仠鐨勮疆璇㈠Q堝彲浠ユā鎷熷績(jī)璺沖紡闀胯繛鎺ョ殑鏂瑰紡錛夛紝鍒ゆ柇鏄惁鏈夋秷鎭埌杈撅紝濡傛灉鏈夊垯鏄劇ず
鑰屾櫘閫氱殑鑱婂ぉ紼嬪簭鐨勬祦紼嬪垯鏄鎴風(fēng)鍙戦佷俊鎭埌openfire鏈嶅姟鍣紝openfire鏈嶅姟鍣ㄥ啀灝嗘秷鎭漿鍙戠粰鍏朵粬瀹㈡埛绔備粬浠渷鍘諱簡(jiǎn)socket鏈嶅姟鍣ㄨ繖閮ㄥ垎錛岄偅鎴戜滑涓轟粈涔堣鍔犱笂socket鏈嶅姟鍣ㄨ繖閮ㄥ垎鍛紵
鎴戜滑榪欐牱鍋氫篃鏄湁鑷繁鐨勯亾鐞嗙殑錛?
棣栧厛錛屽鏋滆鎵嬫満绔嚜宸卞疄鐜板悜openfire鏈嶅姟鍣ㄥ彂閫佺▼搴忕殑浠g爜錛岄偅宸ヤ綔閲忔槸鐩稿綋澶х殑銆傚洜涓烘瘡涓墜鏈哄鉤鍙頒嬌鐢ㄧ殑璇█閮戒笉鍚岋紝姣忎釜騫沖彴閮介渶瑕佸疄鐜板悜openfire鏈嶅姟鍣ㄥ彂閫佽亰澶╀俊鎭殑鎶ユ枃銆傝繖鍏跺疄灝辨槸鍦ㄥ仛閲嶅鐨勫伐浣滐紝鑰屼笖姣忎釜騫沖彴瀹炵幇鍚戞墜鏈虹鍙戦佹姤鏂囦俊鎭殑鎶鏈細(xì)璁╂瘡涓墜鏈虹鐨勫紑鍙戜漢鍛橀兘瑕佸浼?xì)涓濂楀拰openfire浜や簰鐨勪唬鐮併傝繖鍔垮繀浼?xì)閲嶅宸ヤ綔銆侀噸澶嶇浉鍚屼笟鍔$殑浠g爜銆傛墍浠ワ紝鎶婅繖浜涗唬鐮佹斁鍦ㄤ竴涓猼cp/ip鐨剆ocket涓漿鏈嶅姟鍣ㄨ繘琛岀粺涓鍙戦侊紝榪欎篃鏄湁濂藉鐨勩?
鍏舵錛屾妸鎵浠ュ彂閫佹秷鎭湪鎶ユ枃鍦╯ocket鏈嶅姟鍣ㄥ畬鎴愶紝鍙互瀵逛笟鍔¤繘琛屼竴涓粺涓鐨勫鐞嗐佹秷鎭繃婊ゃ?/p>
鎵嬫満绔鍚﹀喅鐨勮В鍐蟲(chóng)柟妗堬紝渚涘弬鑰?/font>
鎵嬫満绔敤http闀胯繛鎺ョ殑鏂瑰紡錛岃繖涓槸涓嶈鐨?/p>
鍏朵竴銆佹墜鏈虹殑縐誨姩緗戠粶涓嶇ǔ瀹氾紝闀胯繛鎺ヤ細(xì)緇忓父鏂帀錛屽綋鐒朵綘鍙互鑷姩榪涜閲嶈繛
鍏朵簩銆侀暱榪炴帴涓鐩磋繛鎺ュ湪鏈嶅姟鍣ㄤ笂錛屽崰鐢ㄦ湇鍔″櫒璧勬簮銆傚綋鐒朵綘鍙互浣跨敤蹇?jī)锜╁紡闀繕q炴帴鎴栨槸杞鏂瑰紡
鍏朵笁銆佹墜鏈虹涓鐩磋繛鎺ユ湇鍔″櫒浼?xì)鋴社敤鎵嬫満绔敤鎴风殑缃懢l滃甫瀹芥祦閲忥紙嫻侀噺涓嶆槸鍏嶈垂鐨勶紝瀹㈡埛浼?xì)鎬庝箞鎯籌級(jí)
鍏跺洓銆佹墜鏈虹涓鐩磋繛鐫鏈嶅姟鍣紝瀵規(guī)墜鏈虹殑鐢?shù)閲忎篃鏈夋秷鑰楋紙鐜板湪鏅鴻兘鏈鴻В鍐崇數(shù)閲忎篃鏄竴涓棶棰橈級(jí)
鍦ㄨ佺増鏈腑鍙戝竷涓涓猈ebService錛岄厤緗產(chǎn)pplicationContext-server.xml鏂囦歡涓坊鍔犲涓嬮厤緗涓嬶細(xì)
jaxws:server鐨勫彂甯冩柟寮?/p>
<bean id="userServiceBean" class="com.hoo.service.ComplexUserService"/>
<bean id="inMessageInterceptor" class="com.hoo.interceptor.MessageInterceptor">
<constructor-arg value="receive"/>
</bean>
<bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
<!-- 娉ㄦ剰涓嬮潰鐨刟ddress錛岃繖閲岀殑address鐨勫悕縐板氨鏄闂殑WebService鐨刵ame -->
<jaxws:server id="userService" serviceClass="com.hoo.service.IComplexUserService" address="/Users">
<jaxws:serviceBean>
<!-- 瑕佹毚闇茬殑 bean 鐨勫紩鐢?-->
<ref bean="userServiceBean"/>
</jaxws:serviceBean>
<jaxws:inInterceptors>
<ref bean="inMessageInterceptor"/>
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<ref bean="outLoggingInterceptor"/>
</jaxws:outInterceptors>
</jaxws:server>
jaxws:endpoint鐨勫彂甯冩柟寮?/p>
<!-- com.hoo.service.ComplexUserService鏄痗om.hoo.service.IComplexUserService鎺ュ彛鐨勫疄鐜幫紝 榪欑鏂規(guī)硶搴旇涓嶈兘浠嶪oc涓紩鐢ㄥ璞?-->
<jaxws:endpoint id="userService2" implementor="com.hoo.service.ComplexUserService" address="/Users">
<jaxws:inInterceptors>
<ref bean="inMessageInterceptor"/>
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<ref bean="outLoggingInterceptor"/>
</jaxws:outInterceptors>
</jaxws:endpoint>
鑰屽湪2.x鏂扮増鏈腑錛屽彂甯僆oc瀹瑰櫒涓殑瀵硅薄涓轟竴涓猈ebService鐨勬柟娉?/p>
<bean id="userServiceBean" class="com.hoo.service.ComplexUserService"/>
<bean id="inMessageInterceptor" class="com.hoo.interceptor.MessageInterceptor">
<constructor-arg value="receive"/>
</bean>
<bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
<!-- 娉ㄦ剰涓嬮潰鐨刟ddress錛岃繖閲岀殑address鐨勫悕縐板氨鏄闂殑WebService鐨刵ame錛?userServiceBean鏄洿鎺ュ紩鐢↖oc瀹瑰櫒涓殑Bean瀵硅薄 -->
<jaxws:server id="userService" serviceBean="#userServiceBean" address="/Users">
<jaxws:inInterceptors>
<ref bean="inMessageInterceptor"/>
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<ref bean="outLoggingInterceptor"/>
</jaxws:outInterceptors>
</jaxws:server>
<!-- 鎴栬呰繖縐嶆柟寮忥紝鍦ㄨ佺増鏈腑榪欎釜鏄笉鑳藉紩鐢↖oc瀹瑰櫒涓殑瀵硅薄錛屼絾鍦?.x涓彲浠ョ洿鎺ョ敤#id鎴?name鐨勬柟寮忓彂甯冩湇鍔?-->
<jaxws:endpoint id="userService2" implementor="#userServiceBean" address="/Users">
<jaxws:inInterceptors>
<ref bean="inMessageInterceptor"/>
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<ref bean="outLoggingInterceptor"/>
</jaxws:outInterceptors>
</jaxws:endpoint>
CXF鍙戝竷WebService瀹樻柟鍙傝冿細(xì)http://cxf.apache.org/docs/writing-a-service-with-spring.html
鍓嶄竴綃?a title="http://www.tkk7.com/hoojo/archive/2012/07/12/382852.html" href="http://www.tkk7.com/hoojo/archive/2012/07/12/382852.html">http://www.tkk7.com/hoojo/archive/2012/07/12/382852.html浠嬬粛浜?jiǎn)Ehcache鏁村悎Spring緙撳瓨錛屼嬌鐢ㄩ〉闈€佸璞$紦瀛橈紱榪欓噷灝嗕粙緇嶅湪Hibernate涓嬌鐢ㄦ煡璇㈢紦瀛樸佷竴綰х紦瀛樸佷簩綰х紦瀛橈紝鏁村悎Spring鍦℉ibernateTemplate涓嬌鐢ㄦ煡璇㈢紦瀛樸?/p>
EhCache鏄疕ibernate鐨勪簩綰х紦瀛樻妧鏈箣涓錛屽彲浠ユ妸鏌ヨ鍑烘潵鐨勬暟鎹瓨鍌ㄥ湪鍐呭瓨鎴栬呯鐩橈紝鑺傜渷涓嬫鍚屾牱鏌ヨ璇彞鍐嶆鏌ヨ鏁版嵁搴擄紝澶у箙鍑忚交鏁版嵁搴撳帇鍔涳紱
EhCache鐨勪嬌鐢ㄦ敞鎰忕偣
褰撶敤Hibernate鐨勬柟寮忎慨鏀硅〃鏁版嵁(save,update,delete絳夌瓑)錛岃繖鏃禘hCache浼?xì)鑷姩鎶娋~撳瓨?shù)腑鍏充簬姝よ〃鐨勬墍鏈夌紦瀛樺叏閮ㄥ垹闄ゆ帀(榪欐牱鑳借揪鍒板悓姝?銆備絾瀵逛簬鏁版嵁緇忓父淇敼鐨勮〃鏉ヨ錛屽彲鑳藉氨澶卞幓緙撳瓨鐨勬剰涔変簡(jiǎn)(涓嶈兘鍑忚交鏁版嵁搴撳帇鍔?錛?
鍦ㄦ瘮杈冨皯鏇存柊琛ㄦ暟鎹殑鎯呭喌涓嬶紝EhCache涓鑸浣跨敤鍦ㄦ瘮杈冨皯鎵цwrite鎿嶄綔鐨勮〃(鍖呮嫭update,insert,delete絳?[Hibernate鐨勪簩綰х紦瀛樹(shù)篃閮芥槸榪欐牱]錛涘騫跺彂瑕佹眰涓嶆槸寰堜弗鏍肩殑鎯呭喌涓嬶紝涓ゅ彴鏈哄瓙涓殑緙撳瓨鏄笉鑳藉疄鏃跺悓姝ョ殑錛?/p>
棣栧厛瑕佸湪hibernate.cfg.xml閰嶇疆鏂囦歡涓坊鍔犻厤緗紝鍦╤ibernate.cfg.xml涓殑mapping鏍囩涓婇潰鍔犱互涓嬪唴瀹癸細(xì)
<!-- Hibernate 3.3 and higher -->
<!--
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory</property>
-->
<!-- hibernate3.0-3.2 cache config-->
<!--
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheProvider</property>
-->
<property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</property>
<!-- Enable Second-Level Cache and Query Cache Settings -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
濡傛灉浣犳槸鏁村悎鍦╯pring閰嶇疆鏂囦歡涓紝閭d箞浣犲緱閰嶇疆浣犵殑applicationContext.xml涓浉鍏砈essionFactory鐨勯厤緗?
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
鐒跺悗鍦╤ibernate.cfg.xml閰嶇疆鏂囦歡涓姞鍏ヤ嬌鐢ㄧ紦瀛樼殑灞炴?
<!-- class-cache config -->
<class-cache class="com.hoo.hibernate.entity.User" usage="read-write" />
褰撶劧浣犱篃鍙互鍦║ser.hbm.xml鏄犲皠鏂囦歡闇瑕丆ache鐨勯厤緗甤lass鑺傜偣涓嬶紝鍔犲叆綾諱技濡備笅鏍煎紡淇℃伅錛?
<class name="com.hoo.hibernate.entity.User" table="USER" lazy="false">
<cache usage="transactional|read-write|nonstrict-read-write|read-only" />
娉ㄦ剰錛歝ache鑺傜偣鍏冪礌搴旂揣璺焎lass鍏冪礌
鍏充簬閫夋嫨緙撳瓨絳栫暐渚濇嵁錛?
ehcache涓嶆敮鎸乼ransactional錛屽叾浠栦笁縐嶅彲浠ユ敮鎸併?/strong>
read- only錛氭棤闇淇敼錛?鍙互瀵瑰叾榪涜鍙緙撳瓨錛屾敞鎰忥細(xì)鍦ㄦ絳栫暐涓嬶紝濡傛灉鐩存帴淇敼鏁版嵁搴擄紝鍗充嬌鑳藉鐪嬪埌鍓嶅彴鏄劇ず鏁堟灉錛屼絾鏄皢瀵硅薄淇敼鑷砪ache涓細(xì)鎶rror錛宑ache涓嶄細(xì)鍙戠敓浣滅敤銆傚彟錛氬垹闄よ褰曚細(xì)鎶ラ敊錛屽洜涓轟笉鑳藉湪read-only妯″紡鐨勫璞′粠cache涓垹闄ゃ?
read-write錛氶渶瑕佹洿鏂版暟鎹紝閭d箞浣跨敤璇?鍐欑紦瀛樻瘮杈冨悎閫傦紝鍓嶆彁錛?em>鏁版嵁搴撲笉鍙互涓簊erializable transaction isolation level錛堝簭鍒楀寲浜嬪姟闅旂綰у埆錛?/em>
nonstrict-read-write錛氬彧鍋跺皵闇瑕佹洿鏂版暟鎹紙涔熷氨鏄錛屼袱涓簨鍔″悓鏃舵洿鏂板悓涓璁板綍鐨勬儏鍐靛緢涓嶅父瑙侊級(jí)錛屼篃涓嶉渶瑕佸崄鍒嗕弗鏍肩殑浜嬪姟闅旂錛岄偅涔堟瘮杈冮傚悎浣跨敤闈炰弗鏍艱/鍐欑紦瀛樼瓥鐣ャ?/p>
濡傛灉浣犱嬌鐢ㄧ殑娉ㄨВ鏂瑰紡錛屾病鏈塙ser.hbm.xml錛岄偅涔堜綘涔熷彲浠ョ敤娉ㄨВ鏂瑰紡閰嶇疆緙撳瓨
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User implements Serializable {
}
鍦―ao灞備嬌鐢╟ache錛屼唬鐮佸涓?
Session s = HibernateSessionFactory.getSession();
Criteria c = s.createCriteria(User.class);
c.setCacheable(true);//榪欏彞蹇呴』瑕佹湁
System.out.println("絎竴嬈¤鍙?);
List<User> users = c.list();
System.out.println(users.size());
HibernateSessionFactory.closeSession();
s = HibernateSessionFactory.getSession();
c = s.createCriteria(User.class);
c.setCacheable(true);//榪欏彞蹇呴』瑕佹湁
System.out.println("絎簩嬈¤鍙?);
users = c.list();
System.out.println(users.size());
HibernateSessionFactory.closeSession();
浣犱細(xì)鍙戠幇絎簩嬈℃煡璇㈡病鏈夋墦鍗皊ql璇彞錛岃屾槸鐩存帴浣跨敤緙撳瓨?shù)腑鐨勫璞°?
濡傛灉浣犵殑Hibernate鍜孲pring鏁村悎鍦ㄤ竴璧鳳紝閭d箞浣犲彲浠ョ敤HibernateTemplate鏉ヨ緗甤ache
getHibernateTemplate().setCacheQueries(true);
return getHibernateTemplate().find("from User");
褰撲綘鏁村悎Spring鏃訛紝濡傛灉浣犵殑HibernateTemplate妯℃澘閰嶇疆鍦⊿pring鐨処oc瀹瑰櫒涓紝閭d箞浣犲彲浠ヨ繖鏍峰惎鐢╭uery cache
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
<property name="cacheQueries">
<value>true</value>
</property>
</bean>
姝ゅ悗錛屼綘鍦╠ao妯″潡涓敞鍏essionFactory鐨勫湴鏂歸兘娉ㄥ叆hibernateTemplate鍗沖彲銆?
浠ヤ笂璁插埌鐨勯兘鏄疭pring鍜孒ibernate鐨勯厤緗紝涓嬮潰涓昏緇撳悎涓婇潰浣跨敤鐨別hcache錛屾潵瀹屾垚ehcache.xml鐨勯厤緗傚鏋滀綘娌℃湁閰嶇疆ehcache錛岄粯璁ゆ儏鍐典笅浣跨敤defaultCache鐨勯厤緗?
<cache name="com.hoo.hibernate.entity.User" maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true" />
<!--
hbm鏂囦歡鏌ユ壘cache鏂規(guī)硶鍚嶇殑絳栫暐錛氬鏋滀笉鎸囧畾hbm鏂囦歡涓殑region="ehcache.xml涓殑name鐨勫睘鎬у?錛屽垯浣跨敤name鍚嶄負(fù)com.hoo.hibernate.entity.User鐨刢ache錛屽鏋滀笉瀛樺湪涓庣被鍚嶅尮閰嶇殑cache鍚嶇О錛屽垯鐢?defaultCache銆?/span>
濡傛灉User鍖呭惈set闆嗗悎錛屽垯闇瑕佸彟琛屾寚瀹氬叾cache
渚嬪User鍖呭惈citySet闆嗗悎錛屽垯闇瑕?/span>
娣誨姞濡備笅閰嶇疆鍒癳hcache.xml涓?/span>
-->
<cache name="com.hoo.hibernate.entity.citySet"
maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="300"
timeToLiveSeconds="600" overflowToDisk="true" />
濡傛灉浣犱嬌鐢ㄤ簡(jiǎn)Hibernate鐨勬煡璇㈢紦瀛橈紝闇瑕佸湪ehcache.xml涓姞鍏ヤ笅闈㈢殑閰嶇疆
<cache name="org.hibernate.cache.UpdateTimestampsCache"
maxElementsInMemory="5000"
eternal="true"
overflowToDisk="true" />
<cache name="org.hibernate.cache.StandardQueryCache"
maxElementsInMemory="10000"
eternal="false"
timeToLiveSeconds="120"
overflowToDisk="true" />
璋冭瘯鏃跺欎嬌鐢╨og4j鐨?strong>log4j.logger.org.hibernate.cache=debug錛屾洿鏂逛究鐪嬪埌ehcache鐨勬搷浣滆繃紼嬶紝涓昏鐢ㄤ簬璋冭瘯榪囩▼,瀹為檯搴旂敤鍙戝竷鏃跺欙紝璇鋒敞閲婃帀錛屼互鍏嶅獎(jiǎng)鍝嶆ц兘銆?/p>
浣跨敤ehcache錛屾墦鍗皊ql璇彞鏄甯哥殑錛屽洜涓簈uery cache璁劇疆涓簍rue灝嗕細(xì)鍒涘緩涓や釜緙撳瓨鍖哄煙錛氫竴涓敤浜庝繚瀛樻煡璇㈢粨鏋滈泦 (org.hibernate.cache.StandardQueryCache)錛?鍙︿竴涓垯鐢ㄤ簬淇濆瓨鏈榪戞煡璇㈢殑涓緋誨垪琛ㄧ殑鏃墮棿鎴?org.hibernate.cache.UpdateTimestampsCache)銆傝娉ㄦ剰錛氬湪鏌ヨ緙撳瓨?shù)腑锛屽畠迤堜笉缂撳瓨缁撴灉闆嗕腑鎵鍖呭惈鐨勫疄浣撶殑紜垏鐘舵侊紱瀹冨彧緙撳瓨榪欎簺瀹炰綋鐨勬爣璇嗙灞炴х殑鍊箋佷互鍙?qiáng)鍚勫肩被鍨嬬殑緇撴灉銆?strong>闇瑕佸皢鎵撳嵃sql璇彞涓庢渶榪戠殑cache鍐?瀹圭浉姣旇緝錛屽皢涓嶅悓涔嬪淇敼鍒癱ache涓紝鎵浠ユ煡璇㈢紦瀛橀氬父浼?xì)鍜屼簩珩斁~撳瓨?shù)竴璧蜂嬌鐢ㄣ?/strong>
榪欑瘒鏂囩珷浠嬬粛Jwchat鐨勫畨瑁呭拰閰嶇疆
棣栧厛Jwchat鐨勯厤緗拰瀹夎闇瑕佸叿澶囩殑鐜錛?
Tomcat 5.0.28+/Tomcat 6
JDK 1.6+
Openfire 3.7.1
1銆?涓嬭澆jwchat宸ョ▼鏂囦歡
涓嬭澆绔欑偣錛?a >http://blog.jwchat.org/jwchat/download/
Zip涓嬭澆錛?a >http://downloads.sourceforge.net/jwchat/jwchat-1.0.zip?use_mirror=
2銆?涓嬭澆瀹屾垚鍚庯紝灝唈wchat-1.0.zip瑙e帇鍒頒綘鐨則omcat鐨剋ebapps鐩綍錛屽皢jwchat-1.0鍛藉悕涓簀wchat錛屽鏋滀笉榪欐牱鐨勮瘽錛屽彲鑳戒細(xì)鍑虹幇閿欒錛屽Authorization failed銆傝嚦灝戣繖鏍蜂細(xì)鏂逛究浣犺闂甹wchat宸ョ▼銆?
鐒跺悗灝唅ndex.html.zh_CN絳夎繖鏍峰甫鏈?.鍚庣紑.zh_CN鐨勮繖鏍風(fēng)殑鏂囦歡鐨?zh_CN閮藉垹鎺夛紝榪涜閲嶅懡鍚嶃?zh_CN鏄〃紺轟腑鏂囩増鐨勶紝褰撶劧浣犱篃鍙互鐩存帴灝?.鍚庣紑.鍚庣紑鐨勬枃浠惰繘琛岄噸鍛藉悕錛岄偅鏍峰氨鏄粯璁ょ殑鑻辨枃鐗堢殑浜?jiǎn)銆?
鎵歸噺鍛藉悕宸ュ叿綾伙細(xì)
package com.hoo.util;
import java.io.File;
/**
* <b>function:</b> 鏂囦歡鍛藉悕宸ュ叿綾?/span>
* @author hoojo
* @createDate 2012-5-14 涓嬪崍01:58:14
* @file FileRenameUtils.java
* @package com.hoo.util
* @blog http://blog.csdn.net/IBM_hoojo
* @email hoojo_@126.com
* @version 1.0
*/
public abstract class FileRenameUtils {
private final static String FILE_PATH = "D:\\apache-tomcat-6.0.33\\webapps\\jwchat";
/**
* <b>function:</b> 灝嗘寚瀹氱洰褰曚笅鐨勬枃浠剁殑type綾誨瀷鐨勬枃浠訛紝榪涜閲嶅懡鍚嶏紝鍛藉悕鍚庣殑鏂囦歡灝嗗幓鎺塼ype
* <p>example: 濡傛灉type = html錛?index.html.html -> index.html</p>
* <p>example: 濡傛灉type = zh_CN錛?index.html.zh_CN -> index.html</p>
* @author hoojo
* @createDate 2012-5-16 涓嬪崍02:16:48
* @param path
* @param type
*/
public static void rename(String path, String type) {
if (path == null || "".equals(path)) {
path = FILE_PATH;
}
File dir = new File(path);
File[] list = dir.listFiles();
for (File file : list) {
String name = file.getName();
String[] s = name.split("\\.");
if (s.length == 3 && type.equals(s[2])) {
System.out.println(s[0] + "--" + s[1] + "--" + s[2]);
file.renameTo(new File(path + "/" + s[0] + "." + s[1]));
}
}
}
public static void main(String[] args) {
FileRenameUtils.rename("D:\\apache-tomcat-6.0.33\\webapps\\jwchat", "zh_CN");
}
}
3銆?涓嬭澆JabberHTTPBind榪欎釜鍖咃紝鍥犱負(fù)鐩存帴涓嬭澆鐨刯wchat娌℃湁WEB-INF銆亀eb.xml鏄棤娉曡繍琛岀殑銆?
JabberHTTPBind鏄痡wchat榪涜http bind閫氫俊鐨勪竴縐嶆柟寮忥紝瀹冨彲浠ヨjwchat鍜宱penfire榪涜閾炬帴閫氫俊銆?
绔欑偣錛?a >http://blog.jwchat.org/jhb/
涓嬭澆鍦板潃錛?a >http://blog.jwchat.org/download/JabberHTTPBind-1.1.1.zip
JabberHTTPBind浼?xì)渚濊禆xalan鐨刲ibrary搴?
涓嬭澆绔欑偣錛?a >http://xml.apache.org/xalan-j/downloads.html
涓嬭澆鐩綍錛?a >http://labs.renren.com/apache-mirror/xml/xalan-j/
4銆?涓嬭澆瀹屾垚鍚庯紝灝咼abberHTTPBind鐨剒ip瑙e帇鍑烘潵鐨刉EB-INF銆丮ETA-INF涓騫舵斁鍒板垰鎵嶇殑jwchat鐩綍涓紝騫朵笖灝嗗垰鎵嶄笅杞界殑xalan鐨剎alan.jar,serializer.jar, xercesImpl.jar, xml-apis.jar鏀懼埌webapps\jwchat\WEB-INF\lib鐩綍涓嬪嵆鍙?
5銆?淇敼jwchat鐩綍涓殑鐩稿叧閰嶇疆
淇敼config.js鏂囦歡
var BACKENDS =
[
{
鈥︹?/pre>},{鈥︹?/pre>},{name:"Open Relay",
description:"HTTP Binding backend that allows connecting to any jabber server",
httpbase:"/JHB/", /* 淇敼榪欓噷涓猴細(xì)/jwchat/JHB/ */type:"binding",
default_server: SITENAME},{鈥︹?/pre>}];
淇敼WEB-INF鐩綍涓嬬殑web.xml鏂囦歡
<servlet-mapping>
<servlet-name>Jabber HTTP Binding Servlet</servlet-name>
<url-pattern>/</url-pattern>
url-pattern淇敼涓猴細(xì)/JHB/
<!-- 榪欓噷鐨勪慨鏀逛富欏墊槸瀵瑰簲涓婇潰鐨刢onfig.js錛屽鏋渃onfig.js鐨刪ttpbase閰嶇疆鏄?jwchat/錛岄偅榪欓噷鐨勫氨涓嶇敤淇敼浜?-->
</servlet-mapping>
6銆?鍚姩tomcat鍚庯紝璁塊棶http://localhost:8080/jwchat/
濡傛灉鐧誨綍鍑虹幇Service unavailable榪欎釜闂錛岄偅涔堜細(xì)鏈変互涓嬪嚑縐嶆儏鍐碉細(xì)
A銆?琛ㄦ槑鏈嶅姟鍣ㄤ笉鍙敤錛屽彲鑳芥槸openfire鏈嶅姟鍣ㄦ病鏈夊惎鍔紝
B銆?webapps\jwchat \config.js鐨勯厤緗湁闂錛屽var SITENAME = "localhost";鍜宱penfire鏈嶅姟鍣ㄥ湴鍧娌℃湁瀵瑰簲
C銆?浼撮殢鍑虹幇錛欵xception in thread "Thread-34" javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found寮傚父錛屽彲鑳芥槸tomcat鐗堟湰浣庝簬tomcat6鎴栨槸jwchat緙哄皯鐩稿簲鐨刯ar鍖咃紝濡傜己灝憍ml鐨剆erializer.jar銆亁alan.jar銆亁ercesImpl.jar銆亁ml-apis.jar
D銆佸鏋滃湪婊¤凍浜?jiǎn)c姝ラ錛屾湁娣誨姞jra鍖呰繕鍑虹幇Exception in thread "Thread-34" javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found寮傚父錛屽緩璁垹闄omcat/work鐩綍涓嬬殑緙撳瓨錛岀劧鍚庨噸鍚痶omcat璇曡瘯
7銆?濡傛灉鐧誨綍鍑虹幇Authorization failed楠岃瘉澶辮觸錛岄偅涔堟湁浠ヤ笅鍑犵鍙兘鐨勬儏鍐碉細(xì)
A銆?鐢ㄦ埛娌℃湁娉ㄥ唽
B銆?openfire鐨勮瘉涔︼紙C:\Program Files\openfire\resources\security錛夋病鏈夊畨瑁呭埌鐩稿簲鐨刯dk鐨凜:\Program Files\Java\jre6\lib\security鐩綍涓?
濡傛灉鍑虹幇榪欑寮傚父淇℃伅錛歫avax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed涔熻〃鏄庢槸瀹夊叏璇佷功鐨勯棶棰橈紱
鍏充簬瑙e喅ssl楠岃瘉錛岀綉涓婃湁浜鴻鍦╦sjac.js涓殑if(this.has_sasl) 榪欒鍓嶉潰鍔犱笂this.has_sasl = false;鏉ュ彇娑坰sl瀹夊叏璇佷功鐨勯獙璇併?
C銆?濡傛灉浣犵殑宸ョ▼鍚嶇О涓嶆槸jwchat錛屽緩璁妸瀹冧慨鏀規(guī)垚jwchat騫朵笖淇敼config.xml鐨勭浉鍏抽摼鎺ョ殑閰嶇疆錛坔ttpbase錛?
D銆?榪樻湁鍙兘鏄綘褰撳墠鐨勭敤鎴鋒病鏈夋敞鍐岋紝榪欎釜鏃跺欎綘鍙互娉ㄥ唽涓涓敤鎴鋒垨鏄湪openfire鎺у埗鍙扮殑鐢ㄦ埛緇勪腑娣誨姞涓涓敤鎴鳳紝鐒跺悗鍐嶇瓑浜?jiǎn)鐪嬬湅鏄惁瀛樺湪杩欎釜闂銆?
8銆?淇敼鏈嶅姟鍣ㄥ悕縐?
鐐瑰嚮鏈嶅姟鍣犳湇鍔″櫒綆$悊鍣犵紪杈戝睘鎬?淇敼鏈嶅姟鍣ㄥ悕縐?
淇敼鍚庣殑鏈嶅姟鍣ㄥ悕縐?
鍑虹幇鍙瑰彿錛屾垜浠鍒犻櫎瀹夊叏璇佷功錛岀偣鍑?yán)L湇鍔″櫒脿鏈嶅姟鍣ㄨ緗犳湇鍔″櫒瀹夊叏璇佷功鍒犳帀榪欓噷鐨勮瘉涔︺?
鍒犻櫎鍚庯紝鍦ㄥ綋鍓嶉〉闈細(xì)鍑虹幇鎻愮ず錛岀劧鍚庢寜鐓ф彁紺虹偣鍑葷浉搴旂殑閾炬帴錛岄噸鍚湇鍔″櫒錛岀劧鍚庣櫥闄嗭紝鍐嶇敓鎴愯瘉涔?
鐢熸垚璇佷功闇瑕佺偣鏃墮棿錛岀劧鍚庣敓鎴愬畬鎴愬悗錛屾墜鍔ㄩ噸鍚痮penfire鏈嶅姟鍣紝鍐嶆鐧婚檰鍙戠幇璀﹀憡娌℃湁浜?jiǎn)銆?
9銆?鍦ㄦ湇鍔″櫒绔鍔犻厤緗?
xmpp.httpbind.client.requests.polling = 0
xmpp.httpbind.client.requests.wait = 10
瀹樻柟涓嬭澆绔欑偣錛?a >http://www.igniterealtime.org/downloads/index.jsp#openfire
涓嬭澆鍦板潃錛?
Exe錛?a >http://www.igniterealtime.org/downloads/download-landing.jsp?file=openfire/openfire_3_7_1.exe
ZIP: http://www.igniterealtime.org/downloads/download-landing.jsp?file=openfire/openfire_3_7_1.zip
鎴戜嬌鐢ㄧ殑鏄痾ip瑙e帇鐗堢殑瀹夎鏂囦歡銆?
鍏朵腑openfire鏄湇鍔″櫒錛屼笅闈㈣繕鏈変竴涓猻park錛岃繖涓槸涓涓猉MPP鍗忚閫氫俊鑱婂ぉ鐨凜S鐨処M杞歡錛屽畠鍙互閫氳繃openfire榪涜鑱婂ぉ瀵硅瘽銆?
2銆?涓嬭澆瀹屾垚鍚庯紝濡傛灉浣犱笅杞界殑鏄痚xe鏂囦歡錛屾墽琛屼綘鐨勫畨瑁呮枃浠訛紝榪涜瀹夎銆傝繖閲屾垜鏄痾ip鐨勬枃浠躲傝В鍘嬪悗錛屽鍒秓penfire鐩綍鍒癈:\Program Files\鐩綍涓嬶紱涓瀹氳鍦–:\Program Files\鐩綍涓嬬殑錛涜繖鏍穙penfire灝卞畨瑁呭畬鎴愪簡(jiǎn)銆?
3銆?涓嬮潰鎴戜滑鍚姩openfire鏈嶅姟鍣紝騫墮厤緗畠銆傚湪C:\Program Files\openfire\bin鐩綍涓嬫湁涓涓數(shù)鐏場(chǎng)鐨刼penfire.exe鏂囦歡錛屽弻鍑?yán)L墽琛岋紝鍚姩瀹屾垚鍚庡彲浠ョ湅鍒?
4銆?鐐瑰嚮Launch Admin鎸夐挳榪涘叆http://127.0.0.1:9090/setup/index.jsp欏甸潰錛岄厤緗畂penfire鏈嶅姟鍣?
5銆?閫夋嫨璇█ 涓枃綆浣?
鐐瑰嚮continue榪涘叆
6銆?閰嶇疆鏈嶅姟鍣ㄥ煙鍚?
濡傛灉浣犳槸鏈湴璁塊棶錛岄偅涔堜綘鍙互涓嶄慨鏀規(guī)垨鏄嬌鐢╨ocalhost銆?27.0.0.1鐨勬柟寮?
濡傛灉浣犵敤浜庡緗戞垨灞鍩熺綉璁塊棶錛岄偅涔堜綘鐨勫湴鍧閰嶇疆鎴愬緗戞垨灞鍩熺綉鍦板潃
7銆?閫夋嫨鏁版嵁搴?
閫夋嫨openfire鑷甫鐨勶紝褰撶劧浣犱篃鍙互閫夋嫨浣犵殑鏁版嵁搴撶被鍨嬨傚Oracle銆丼QLServer銆丮ySQL絳夈傚鏋渙penfire娌℃湁甯dbc鐨勮繛鎺ラ┍鍔紝浣犻渶瑕佹坊鍔犺繛鎺ユ暟鎹簱鐨刯dbc椹卞姩錛涢┍鍔ㄦ斁鍦–:\Program Files\openfire\lib鐩綍涓?
8銆?閫夋嫨鐗規(guī)ч厤緗紝榛樿鍗沖彲
9銆?綆$悊鍛橀偖浠訛紝鍙互璺寵繃榪欐
10銆?瀹夎瀹屾垚
榪涘叆綆$悊鍛樻帶鍒跺彴欏甸潰
11銆?榪涘叆http://127.0.0.1:9090/login.jsp欏甸潰鍚庯紝杈撳叆admin銆佸瘑鐮乤dmin鐧婚檰榪涘叆
12銆?榪涘叆鍚庡彲浠ョ湅鍒?
鏈嶅姟鍣ㄥ悕縐板氨鏄痡wchat鐨勮繛鎺ュ湴鍧錛涗綘鍙互浣跨敤Spark銆乯wchat閾炬帴榪欎釜鍦板潃榪涜IM閫氫俊鑱婂ぉ鈥︹?
鑷蟲(chóng)錛宱penfire鐨勫畨瑁呭拰閰嶇疆宸茬粡瀹屾垚銆備笅涓綃囨枃绔犲紑濮嬪畬鎴恓wchat鐨勫畨瑁呭拰閰嶇疆銆?
濡傛灉浣犻渶瑕佹洿鎹㈡湇鍔″櫒鍚嶇Оip錛岃鐪嬩笅涓綃囨枃绔狅紒
System錛歐indows
WebBrowser錛欼E6+銆丗irefox3+
JavaEE Server錛歵omcat5.0.2.8銆乼omcat6
IDE錛歟clipse銆丮yEclipse 8
Flex IDE錛欶lash Builder 4
BlazeDS錛?.5
寮鍙戜緷璧栧簱錛?
JavaEE5銆乥lazeDS 4.5
Email錛歨oojo_@126.com
Blog錛?a >http://blog.csdn.net/IBM_hoojo
1銆?棣栧厛瑕佹彁渚涚浉鍏崇殑jar鍖?
Java鏈嶅姟鍣ㄧ闇瑕佹彁渚汢lazeDS鐩稿叧鐨勯厤緗拰jar鍖?
涓嬭澆鍦板潃錛?a >http://opensource.adobe.com/wiki/display/blazeds/download+blazeds+trunk
涓嬭澆鍚庯紝瑙e帇浣犲彲浠ョ湅鍒拌繖鏍風(fēng)殑涓涓洰褰?
Docs灝辨槸鏂囨。
Resource鏄簮鐮?
SampleDB鏄ず渚嬬敤鐨勬暟鎹簱錛屽彲浠ヨ繍琛宻tartdb.bat鏉ュ惎鍔ㄦ暟鎹簱
Tomcat鏄唴緗殑tomcat錛屽鏋滀綘娌℃湁tomcat鐨勮瘽鍙互浣跨敤瀹冿紝鍦╰omcat鐨剋ebapps鐩綍涓湁samples紺轟緥
blazeds.war灝辨槸blazeDS鐨勬牳蹇?jī)鏂囦欢銆佸簱錛屼綘鍙互鎶婅繖涓獁ar鏀懼埌tomcat鐨剋ebapps鐩綍涓嬶紝灝變細(xì)鑷姩瑙e帇銆傚綋鐒朵綘涔熷彲浠ヨ嚜宸辨墜鍔ㄨВ鍘嬨?
Blazeds-spring.war鏄拰spring鏁村悎鐨勯厤緗?
Ds-console.war鏄痓lazeDS鐨勬帶鍒跺彴紼嬪簭
Samples.war鏄畼鏂規(guī)彁渚涚殑紺轟緥
Samples-spring.war鏄痵pring鍜宐lazeDS鐨勬暣鍚堢ず渚?
1銆佹柊寤轟竴涓狫avaWeb Project宸ョ▼錛岀劧鍚庡湪WEB-INF/lib鐩綍涓坊鍔犲涓媕ar鍖?
榪欎簺jar鍖呭彲浠ュ湪blazeds.war鍖呬腑鐨刲ib鐩綍涓彲浠ユ壘鍒?
2銆?鐒跺悗浣犻渶瑕佸皢blazeds.war鍖呬腑鐨刉EB-INF鐩綍涓嬬殑flex鐩綍澶嶅埗鍒板綋鍓嶅伐紼嬬殑WEB-INF涓?
3銆?灝哹lazeds.war鍖呬腑鐨刉EB-INF鐩綍涓嬬殑web.xml鐨勯厤緗紝娣誨姞鍒板綋鍓嶅伐紼嬬殑web.xml鏂囦歡涓?
4銆?鏈鍚庡熀鏈殑鏍峰紡濡備笅
5銆?鏈鍚庝綘鍙戝竷褰撳墠宸ョ▼錛屽鏋滄病鏈夐敊璇氨琛ㄦ槑浣犳湇鍔″櫒绔儴緗叉垚鍔熶簡(jiǎn)銆?
6銆?緙栧啓涓涓狧elloWorld鐨刯ava紼嬪簭銆備唬鐮佸涓?
package com.hoo.flex;
/**
* <b>function:</b> HelloWorld Example
* @author hoojo
* @createDate 2011-8-31 涓嬪崍06:11:27
* @file HelloWorld.java
* @package com.hoo.flex
* @project BlazeDSServer
* @blog http://blog.csdn.net/IBM_hoojo
* @email hoojo_@126.com
* @version 1.0
*/
public class HelloWorld {
public HelloWorld() {
}
public String sayHello(String name) {
return "[" + name + "] say hello!";
}
}
灝變竴涓猻ayHello鏂規(guī)硶錛屾帴鏀朵竴涓弬鏁般?
1銆佸垱寤轟竴涓狥lex宸ョ▼錛屽湪閫夋嫨鏈嶅姟鍣ㄦ妧鏈殑鏃跺欙紝浣犻渶瑕侀夋嫨J2EE銆傜劧鍚庡嬀涓婁嬌鐢↗2EE鎶鏈紝鐒跺悗閫夋嫨BlazeDS銆傜偣鍑籒ext涓嬩竴姝?
2銆侀厤緗牴鏂囦歡澶癸紝涔熷氨鏄疛avaEE鏈嶅姟鍣ㄧ鍙戝竷紼嬪簭鍦╰omcat涓殑浣嶇疆銆傛垜榪欓噷鏄湪tomcat鐨剋ebapps鐨凚lazeDSServer涓紝BlazeDSServer鏄垜鐨勬湇鍔″櫒绔▼搴忋傛牴URL鏄闂湇鍔″櫒绔▼搴忕殑url錛涗笂涓嬫枃鐩綍瀵瑰簲宸ョ▼鍚嶇О錛涙渶鍚庡氨鏄緭鍑烘枃浠跺す鐩綍錛岃繖涓槸Flex鐨勬枃浠舵渶鍚庡湪tomcat涓繚瀛樼殑鐩綍銆?
3銆佹渶鍚庝綘闇瑕佽緗湇鍔″櫒绔殑services-config.xml鐨勮礬寰勫埌緙栬瘧鍙傛暟涓紝榪欎釜寰堥噸瑕侊紒濡傛灉浣犱笉璁劇疆鐨勮瘽錛岄偅涔堜綘鍦ㄥ悗闈㈢敤RemoteObject璋冪敤BlazeDS鐨勬椂鍊欙紝灝遍渶瑕佽緗甧ndpoint銆傝緗涓嬶細(xì)
-services鏄弬鏁伴敭錛屽悗闈㈢殑瀛楃涓叉槸鍊箋傛垜榪欓噷鏄緗瓸lazeDSServer鍙戝竷鍒皌omcat鐩綍涓殑services-config.xml鐨勮礬寰勩?
4銆佺紪璇慒lex鍓嶇浠g爜錛屼唬鐮佸涓嬶細(xì)
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="BlazeDSHelloWorld.mxml" layout="absolute" minWidth="955" minHeight="600">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.AsyncToken;
import mx.rpc.events.ResultEvent;
private function faultHandler(event: Event): void {
Alert.show(event.toString(), event.type);
}
private function resultHandler(event: ResultEvent): void {
//event.result鏄湇鍔″櫒绔繑鍥炲璞?/pre>result.text = "Message錛? + event.result.toString();}private function sendHandler(): void {helloRemoteObject.sayHello(userName.text);}]]>
</mx:Script><!-- 褰撳伐紼嬫病鏈夎緗紪璇戝櫒-service鍙傛暟 鎴栨槸-context-root絳夊弬鏁幫紝灝遍渶瑕佹墜鍔ㄨ緗甧ndpoint鍙傛暟 -->
<mx:RemoteObjectid="helloRemoteObject"destination="helloWorld"fault="faultHandler(event)"result="resultHandler(event)"showBusyCursor="true"/><mx:Panel x="10" y="10" width="272" height="148" layout="absolute" title="BlazeDS Remote HelloWorld Sample"><mx:Label x="10" y="22" text="璇瘋緭鍏ュ悕縐?/><mx:TextInput x="70" y="19" id="userName"/><mx:Button x="184" y="45" label="鍙戦? click="sendHandler()"/><mx:Text x="10" y="79" id="result"/></mx:Panel></mx:Application>
棣栧厛浣犻渶瑕佸皢Java鏈嶅姟鍣ㄧ鐨凥elloWorld紼嬪簭閰嶇疆鍦╢lex鐨剅emoting-config.xml涓紝閰嶇疆濡備笅錛?
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<destination id="helloWorld">
<properties>
<source>com.hoo.flex.HelloWorld</source>
</properties>
</destination>
</service>
涓婇潰mxml浠g爜涓殑RemoteObject鐨刣estination瀵瑰簲鐨勫氨鏄痳emoting-config.xml閰嶇疆鏂囦歡涓殑destination鐨刬d銆傝繖涓槸涓涓瀵瑰簲鐨勶紝鐒跺悗鍦╯endHandler鏂規(guī)硶涓紝helloRemoteObject瀵瑰簲鐨勫氨鏄疪emoteObject鐨刬d錛岃宻ayHello鏂規(guī)硶瀵瑰簲鐨勫氨鏄厤緗湪remoting-config.xml涓殑destination鐨剆ource鐨凧ava鏈嶅姟鍣ㄧ浠g爜鐨勫叕鏈夋柟娉曘傛坊鍔犲畬閰嶇疆鍚庯紝闇瑕侀噸鍚痶omcat銆?
榪愯涓婇潰鐨刦lex紼嬪簭鍚庯紝濡傛灉杈撳叆鍙傛暟鍚庯紝鐐瑰嚮鍙戦侊紝鍙互鐪嬪埌鏈嶅姟鍣ㄧ榪斿洖鐨勬秷鎭氨璇存槑BlazeDS鏁村悎F(tuán)lex鎴愬姛浜?jiǎn)銆?