我用的是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());
}
}
}
以上是我总结的些经验,希望给初学者一些帮助。