我用的是JBoss+Eclipse。
安裝JBoss沒什麼說得了,記得安裝完後在環境變量裏添加:JBOSS_HOME=c:/jboss-4.0.2(這裏是你安裝JBoss的路徑),將%JBOSS_HOME%/bin加入至PATH中。
說明下JBoss的目錄結構,對初學者還是有些幫助的。
bin : JBoss 開關 Scripts
client : 與JBoss通訊使用的客戶端 libraries ( JARs )
docs : 設定文檔樣本. ( 如資訊庫設定文檔樣本等 )
docs/dtd : JBoss 不同XML 的 Document Type Definitions (DTDs) 檔.
lib : JBoss 啓動時, 會讀取放在這裏被不同配置共享的 libraries.
server : 存放 JBoss 不同配置檔案.
server/default : JBoss 預設的配置檔案.
server/default/conf : JBoss 配置檔案.
server/default/data : JBoss 資料庫.
server/default/deploy : JBoss 自動發佈檢測目錄. ( EBJ-JARs, WARs 及 EARs 放下去, JBoss 會自動檢測)
server/default/lib : JBoss 啓動此配置目錄時, 會讀取這裏的 libraries.
server/default/log : 存放 JBoss 日誌檔案.
server/default/tmp : 存放 JBoss 咱存檔案.
server/default/work : 存放 JBoss 編譯後的java byte code.
注意事項:
1:ejb-jar.xml是放在META-INF文件夾裏,如果你要建立jboss.xml也是放在這裏。
2:如果你在同一臺機器上運行客戶端代碼和JBOSS服務器的話,那以下代碼無須任何修改就可以運行,
env.put(Context.PROVIDER_URL, "localhost:1099");
如果在別的機器更換IP即可。
3:如果你運行時出現ClassNotFound諸如此類的異常,說明你沒有導入包,導入即可。我現在運行是導入了 2個包,jnp-client.jar,jbossall-client.jar,它們是在JBoss下client目錄裏面的。
4:看到網上有很多寫建立個jboss.xml,我運行後才理解它是用於設置JNDI的,其實像咱們這麼簡單可以不 需要建立。
記住:Object obj = ctx.lookup("Hello");這裏"Hello"是你在ejb-jar.xml裏面的<ejb-name>得值,如果你建立
了jboss.xml那麼"Hello"應該換成<jndi-name>的值。
這是我jboss.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN" "jboss_4_0.dtd" >
<jboss>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<jndi-name>example/Hello</jndi-name>
</session>
</enterprise-beans>
</jboss>
HelloClient.java:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.*;
public class HelloClient {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "localhost:1099");
env.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
try {
Context ctx = new InitialContext(env);
Object obj = ctx.lookup("Hello");
HelloHome home = (HelloHome)javax.rmi.PortableRemoteObject.narrow(obj, HelloHome.class);
Hello hello = home.create();
System.out.println(hello.hello());
hello.remove();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
以上是我總結的些經驗,希望給初學者一些幫助。