锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
濡傝嚜瀹氫箟MBean鏈嶅姟渚濊禆浜庡叾浠朚Bean鏈嶅姟錛屽彲浠ラ氳繃濡備笅鏂規硶瀹炵幇錛?br />1銆佸湪鑷畾涔塎Bean鎺ュ彛涓坊鍔燬ervice涓換浣曟柟娉曘?br />聽聽聽榪欑鏂瑰紡閬垮厤浜嗗JBoss鍏蜂綋鎺ュ彛鐨勪緷璧栥?br />2銆佷負鑷畾涔塎Bean鎺ュ彛鎵╁睍org.jboss.system.Service鎺ュ彛銆?br />
3銆佷負鑷畾涔塎Bean鎺ュ彛鎵╁睍org.jboss.system.ServiceMBean鎺ュ彛銆?br />聽聽聽鏈綆鍗曠殑鍔炴硶鏄皢鑷畾涔塎Bean鎺ュ彛緇ф壙浜嶴erviceMBean鎺ュ彛錛屽皢MBean瀹炵幇綾葷戶鎵縎erviceMBeanSupport綾匯係erviceMBeanSupport宸茬粡瀹炵幇浜哠erviceMBean鎺ュ彛錛孲erviceMBeanSupport榪橀泦鎴愪簡鏃ュ織銆丣Boss鏈嶅姟鐘舵佺鐞嗚窡韙姛鑳斤紝榪欎簺鏂規硶闇瑕佹垜浠叿浣撳疄鐜癱reateService銆乻tartService銆乻topService鍜宒estroyService涓殑閮ㄥ垎鏂規硶銆?br />
涓嬮潰浠嬬粛鍩轟簬ServiceMBean鎺ュ彛鍜孲erviceMBeanSupport綾葷殑JNDIMapMBean鎺ュ彛鍙婂叾JNDIMap瀹炵幇綾匯?br />
package org.joss.chap2.ex2;
import javax.naming.NamingException;
import org.jboss.system.ServiceMBean;
public interface JNDIMapMBean extends ServiceMBean
{
聽public String getJndiName();
聽public void setJndiName(String jndiName) throws NamingException;
}
package org.joss.chap2.ex2;
import java.util.HashMap;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.naming.InitialContext;
import javax.naming.Name;
import javax.naming.NamingException;
import org.jboss.naming.NonSerializableFactory;
import org.jboss.system.ServiceMBeanSupport;
public class JNDIMap extends ServiceMBeanSupport implements JNDIMapMBean
{
聽private String jndiName;
聽private HashMap contextMap = new HashMap();
聽public JNDIMap()
聽{
聽聽super();
聽聽// TODO Auto-generated constructor stub
聽}
聽public String getJndiName()
聽{
聽聽
聽聽return jndiName;
聽}
聽public void setJndiName(String jndiName) throws NamingException
聽{
聽聽String oldName = this.jndiName;
聽聽this.jndiName = jndiName;
聽聽if(super.getState()==STARTED)
聽聽{
聽聽聽unbind(oldName);
聽聽聽try
聽聽聽{
聽聽聽聽rebind();
聽聽聽}
聽聽聽catch(Exception e)
聽聽聽{
聽聽聽聽NamingException ne = new NamingException("Failed to update jndiName");
聽聽聽聽ne.setRootCause(e);
聽聽聽聽throw ne;
聽聽聽}
聽聽}
聽}
聽
聽public void startService()throws Exception
聽{
聽聽rebind();
聽}
聽
聽
聽public void stopService()
聽{
聽聽unbind(jndiName);
聽}
聽
聽private void rebind() throws NamingException
聽{
聽聽InitialContext rootCtx = new InitialContext();
聽聽Name fullName = rootCtx.getNameParser("").parse(jndiName);
聽聽NonSerializableFactory.rebind(fullName,contextMap,true);
聽}
聽
聽private void unbind(String jndiName)
聽{
聽聽try
聽聽{
聽聽聽InitialContext rootCtx = new InitialContext();
聽聽聽rootCtx.unbind(jndiName);
聽聽聽NonSerializableFactory.unbind(jndiName);
聽聽}
聽聽catch(NamingException e)
聽聽{
聽聽聽System.out.println(e);
聽聽}
聽}
聽public String getName()
聽{
聽聽// TODO Auto-generated method stub
聽聽return null;
聽}
聽public int getState()
聽{
聽聽// TODO Auto-generated method stub
聽聽return 0;
聽}
聽public String getStateString()
聽{
聽聽// TODO Auto-generated method stub
聽聽return null;
聽}
聽public void jbossInternalLifecycle(String arg0) throws Exception
聽{
聽聽// TODO Auto-generated method stub
聽}
聽public void create() throws Exception
聽{
聽聽// TODO Auto-generated method stub
聽}
聽public void start() throws Exception
聽{
聽聽// TODO Auto-generated method stub
聽}
聽public void stop()
聽{
聽聽// TODO Auto-generated method stub
聽}
聽public void destroy()
聽{
聽聽// TODO Auto-generated method stub
聽}
聽public ObjectName preRegister(MBeanServer arg0, ObjectName arg1)
聽聽聽throws Exception
聽{
聽聽// TODO Auto-generated method stub
聽聽return null;
聽}
聽public void postRegister(Boolean arg0)
聽{
聽聽// TODO Auto-generated method stub
聽}
聽public void preDeregister() throws Exception
聽{
聽聽// TODO Auto-generated method stub
聽}
聽public void postDeregister()
聽{
聽聽// TODO Auto-generated method stub
聽}
}
<?xml version="1.0" encoding="UTF-8"?>
<server>
聽<mbean code="org.joss.chap2.ex2.JNDIMap"
聽聽name="chap2.ex2:service=JNDIMap">
聽聽<attribute name="JndiName">inmemory/map/MapTest</attribute>
聽聽<depends>jboss:service=Naming</depends>
聽</mbean>
</server>
聽
聽聽聽聽聽聽 JBOSS 鎺ㄥ嚭 3.0.4 鐗堟湰鍏跺疄宸茬粡寰堜箙寰堜箙鍟︼紝鍙槸鍛紝緗戜笂鍏充簬瀹冪殑浠嬬粛灝卞皯寰楀彲鎬滐紝鑰屼笖浠呮湁鐨勫嚑綃囦粙緇嶉兘騫朵笉瀹屽叏姝g‘錛屽緢澶氱敋鑷蟲槸鐩存帴鎷瘋礉 jboss2.4.4 鐨勭浉鍏沖唴瀹廣傞偅浜涙妱琚呮病鏈夋兂鍒幫紝浠?/span> jboss2.4.4 鍒?/span> jboss3.0.4 涔嬮棿鏈夊緢澶х殑椋炶穬錛岀敋鑷崇洰褰曠粨鏋勪篃涓嶇浉鍚屼簡錛岀浉鍏抽厤緗洿涓嶇敤澶氳錛屼粬浠偅浜涙嫹璐濇潵鐨勪綔鍝佹牴鏈笉鑳芥紜寚瀵間漢浠涔?/span> jboss 銆?/span>
聽聽聽聽聽聽 涓轟簡瀛︿範 jboss 錛屾垜鎯沖ぇ澶氭暟浜哄彲鑳介兘瑕佷粠 http://www.jboss.org 閭i噷涓嬭澆鍏舵湰韜殑鏂囨。錛屽 3.x 鐗堟湰灝辨湁鏂囨。 JBoss.3.0QuickStart.Draft3.pdf 鏉ヨ繘琛屽叆闂ㄦ寚瀵箋備絾鏄護浜轟竾涓囨病鏈夋兂鍒扮殑鏄紝 JBoss.3.0QuickStart.Draft3.pdf 鏂囨。涓敋鑷充篃鏈夐敊璇殑鍦版柟錛屽畬鍏ㄦ寜鐓у畠鐨勬寚寮曪紝澶у灝嗕細璧板集璺殑銆?/span>
聽聽聽聽聽聽 鍥犳錛岀粨鍚堟垜鏈榪戝涔?/span> jboss3.0.4 鐨勭粡楠岋紝鏍規嵁瀹為檯搴旂敤鎯呭喌錛屾葷粨鍑?/span> jboss3.0.4 閰嶇疆鍙婁嬌鐢ㄥ垵姝ユ枃妗o紝渚涘ぇ瀹跺弬鑰冨拰璁ㄨ銆?/span>
聽聽聽聽聽聽 棣栧厛錛屼綘蹇呴』瀹夎浜?/span> JDK 錛岀増鏈負 1.3 浠ヤ笂錛屾垜浣跨敤鐨勬槸 1.4 鐗堟湰銆傚茍鍦?/span> CLASSPATH 涓緗?/span> JAVA_HOME 鐜鍙橀噺涓?/span> JDK 瀹夎鐩綍銆傜‘淇濆湪浣犵殑鏈哄櫒涓婂彲浠ヨ繍琛?/span> JAVA 紼嬪簭銆?/span>
聽聽聽聽聽聽 鍦?/span> jboss 鑷繁鐨勭綉绔?/span> http://www.jboss.org 涓嬭澆 jboss3.0.4 錛屾湁 jboss-3.0.4.zip 鍜?/span> jboss-3.0.4_tomcat-4.1.12.zip 銆傚悗鑰呮槸 jboss 鍜?/span> tomcat 鏁村悎鍒頒竴璧風殑鐗堟湰錛岃繖閲屼富瑕佷粙緇嶅墠鑰咃紝鏃㈠崟鐙殑 jboss3.0.4 銆?/span>
聽聽聽聽聽聽 jboss 鐨勮繍琛屽緢綆鍗曘傚皢 jboss-3.0.4.zip 瑙e帇鍒版湰鍦扮‖鐩樼殑涓涓洰褰曚腑銆備細鏈変互涓嬪嚑涓洰褰曠敓鎴愶細
bin
鏀劇疆 jboss 鍚姩鍜屽仠姝㈢殑鍙墽琛岃剼鏈枃浠?/span>
docs
鏀劇疆 jboss 鐨勪緥瀛愩佹祴璇曡剼鏈拰鍚勭鑴氭湰閰嶇疆鏂囦歡鐨?/span> DTD
lib
鏀劇疆 jboss 鎵闇瑕佺殑閮ㄥ垎 jar 鍖呮枃浠?/span>
client
鏀劇疆 EJB 瀹㈡埛绔繍琛屾椂鎵闇瑕佺殑 jar 鍖?/span>
server
鏀劇疆鍚勫惎鍔ㄧ被鍨嬬殑鏈嶅姟鍣ㄧ EJB 閰嶇疆鎵闇瑕佺殑鏂囦歡絳夈?/span>
Jboss3.0.4 鏈変笁縐嶅惎鍔ㄧ被鍨嬶紝鍒嗗埆涓?/span> all, default, minimal 銆傚鍦?/span> windows 騫沖彴涓嬪惎鍔?/span> jboss 錛屽彲鐩存帴鍚姩 bin 鐩綍涓嬬殑 run.bat 鏃㈠彲銆傛鏃墮粯璁や負浠?/span> default 褰㈠紡鍚姩錛屽闇鍏跺畠鍚姩鏂瑰紡錛屽垯闇瑕佸弬鏁拌緗紝濡傛兂浠?/span> all 妯″紡鍚姩錛屽垯榪愯 run.bat 鈥揷 all 鍛戒護銆傝嚦浜庝笁縐嶅惎鍔ㄦā寮忕殑鍖哄埆錛屾棤闈炲氨鏄惎鍔ㄧ殑鏈嶅姟澶氬皯涓嶅悓錛屽叿浣撹鍙傜収 JBoss.3.0QuickStart.Draft3.pdf 鏂囨。銆傝鏂囨。涔熸湁璁劇疆 jboss 鍚姩涓?/span> windows 鏈嶅姟鐨勪竴孌碉紝涔熷彲浠ュ弬鐓э紝涓嶈繃鎴戞寜鐓у畠鐨勫仛娉曞皾璇曚簡涓涓嬶紝鍙戠幇灞呯劧 jboss 鐨勬湇鍔′細鍗犳嵁 90% 浠ヤ笂鐨?/span> CPU 璧勬簮 銆?/span>
聽聽聽聽聽聽 姝e澶у鎵鐪嬪埌鐨勶紝 jboss 鍚姩灝辮繖涔堢畝鍗曪紝鑰屼笖涔熶笉闇瑕佹寜鐓ц嚜宸辯殑鏈哄櫒棰濆榪涜鍏朵粬閰嶇疆銆傚埌榪欎竴姝ワ紝澶у閮藉緢鐖藉惂銆?/span> OK 錛岃鎴戜滑緇х畫
榪欐湰鏉ヤ笉搴斿崟鐙垚涓轟竴绔狅紝浣嗘槸錛岀綉涓婂悇璧勬枡鍜?/span> JBoss.3.0QuickStart.Draft3.pdf 涓兘鍦ㄨ繖涓閮ㄥ垎瀵逛嬌鐢ㄨ呰繘琛屼簡璇錛屾垜鎯沖湪榪欓噷鎴戞湁蹇呰榪涜婢勬竻銆?/span>
鍚姩 jboss 鍚庯紝鎴戜滑鍙互鏌ョ湅 8080 绔彛錛屽湪嫻忚鍣ㄥ湴鍧鏍忎腑閿叆 http://localhost:8080 錛屾垜浠細鍙戠幇涓涓敊璇〉闈紝鍐呭涓衡?/span> HTTP ERROR: 404 / Not Found聽 RequestURI=/ 鈥濊繖鏄甯哥殑錛屽洜涓轟綘鏍規湰灝辨病鏈夐〉闈㈠彲浠ユ樉紺恒?/span>
鍦ㄦ寜鐓х綉涓婅祫鏂欏拰 JBoss.3.0QuickStart.Draft3.pdf 鐨勮姹傛煡鐪?/span> 8082 绔彛鏃訛紝鎴戜滑灝變細鍙戠幇錛屾牴鏈拰璧勬枡涓榪頒笉涓鑷翠簡銆?/span> JBoss.3.0QuickStart.Draft3.pdf 涓殑鍘熸枃鏄繖鏍風殑錛氣?/span> To check if JBoss is running please open a browser and enter http://localhost:8082 which will list all JBoss components running. 鈥濅絾鏄紝鎴戜滑灝嗕細鍑虹幇涓涓敊璇〉闈紒騫朵笉鏄薄瀹冩墍璇寸殑浼氬垪鍑烘墍鏈夎繍琛岀殑 JBOSS 緇勪歡銆傜粡榪囨煡鎵撅紝鍙戠幇鍏跺疄搴旇鏄?/span> http://localhost:8080/jmx-console 銆傛鐐逛竴瀹氭敞鎰忥紝鍚﹀垯浼氭墦鍑誨垵瀛﹁呭涔?/span> jboss 鐨勫叴瓚g殑銆傛垜浠氳繃榪欎釜欏甸潰榪涜瀵?/span> JBOSS 鐨勫悇鏈嶅姟鐨勯厤緗拰綆$悊銆?/span>
鎴戜滑鍐嶆煡鐪?/span> http://localhost:8083 浼氬嚭鐜頒竴涓病鏈夐敊璇殑絀虹櫧欏碉紝姝e父錛屽簲璇ユ槸榪欐牱銆?/span>
鎴戜滑鍐嶆煡鐪?/span> http://localhost:1099 浼氬嚭鐜頒竴澶у爢涔卞瓧絎︼紝褰撶劧錛岄噷闈㈠寘鍚簡浣犵殑 IP 鍦板潃絳夌瓑綾諱技鐨勪俊鎭?/span> 1099 鏄?/span> jnp 鍗忚鐩戝惉鍚嶅瓧鏈嶅姟鐨勭己鐪佺鍙o紝 RMI 鐨勭己鐪佺鍙d篃鏄竴鏍風殑銆傚湪 JNDI 涓紝鎴戜滑闇瑕佺敤鍒版绔彛銆?/span>
OK 錛屽熀鏈鍙d俊鎭氨榪欎簺銆?/span>