1、JBOSS跟eclipse的集成
(1)JBOSS4.2
直接下载,解压即可使用。
(2)JBOSS7.1
下载JBOSS7.1
下载安装JBOSSTOOLS:
步骤:【eclipse】→【帮助】→【Install New Software】→【Add】→【Name】:JBossTools→【Location】:http://download.jboss.org/jbosstools/updates/development/indigo/
下载安装JBossTools Aop:
步骤:【eclipse】→【帮助】→【Install New Software】→【Add】→【Name】:JBossTools→【Location】:http://download.jboss.org/jbosst ... indigo/soa-tooling/
然后再环境变量中进行配置,JBOSS_HOME=JBOSS的安装目录,再在path中加入%JBOSS_HOME%\bin;
(3)集成:在Server配置中可以根据不同版本加入JBOSS,不知什么原因,JBOSS4.2的安装目录不要带有中文和空格,我出错了,改完后就成功。JBOSS7.1没出现这种情况。
2、EJB3.0的开发
创建java项目、直接建EJB项目都可以。创建java项目需要导入相应的jar包,在JBOSS的client目录下有。若是EJB项目,创建时会自动导入。
3、EJB3.0在JBOSS中发布
Eclipse中集成好JBOSS,可以直接部署,不用手动拷贝。用java创建web时,导出成war时会报错,关于Module的错误。但通过ant可以导出。以下是build.xml文件的格式。
<?xml version="1.0"?>
<!-- ======================================================================= -->
<!-- WEB EJBTest build file -->
<!-- ======================================================================= -->
<project name="EJBTest" default="web-war" basedir=".">
<property environment="env" />
<property name="resouce.dir" value="${basedir}/web" />
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<property name="jboss.server.config" value="default" />
<target name="web-war" description="创建WEB发布包">
<war warfile="${basedir}/EJBTest.war" webxml="${resouce.dir}/WEB-INF/web.xml">
<fileset dir="${resouce.dir}">
<include name="**/*.jsp"/>
</fileset>
</war>
</target>
<target name="deploy" depends="web-war">
<copy file="${basedir}/EJBTest.war" todir="${jboss.home}/server/${jboss.server.config}/deploy" />
</target>
<!-- =================================================================== -->
<!-- Cleans up generated stuff -->
<!-- =================================================================== -->
<target name="clean">
<delete file="${jboss.home}/server/${jboss.server.config}/deploy/EJBTest.war" />
</target>
</project>
4、客户端访问EJB
都需要现在客户端创建对应的接口(全名要一致)
(1)EJB发布在JBOSS4.2
<%@ page import="com.xzb.ejb.HelloWorldRemote, javax.naming.*, java.util.Properties"%>
<%
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext ctx;
try {
ctx = new InitialContext(props);
HelloWorldRemote helloworld = (HelloWorldRemote) ctx.lookup("HelloWorld/remote");
out.println(helloworld.sayHello("佛山人"));
} catch (NamingException e) {
out.println(e.getMessage());
}
%>
(2)EJB发布在JBOSS7.1
配置文件:
内容为:
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port = 4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
访问程序:
public class HelloWorldTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Hashtable<String, String> jndiProperties = new Hashtable<String, String>();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
try {
Context context = new InitialContext(jndiProperties);
final String appName = "";
final String moduleName = "Hello";
final String distinctName = "";
Object obj = context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/HelloWorldBean!com.foshanshop.ejb3.HelloWorld");
HelloWorld hwr =(HelloWorld)obj;
String say = hwr.SayHello("小明");
System.out.println(say);
} catch (NamingException e) {
e.printStackTrace();
}
}
}
说明:"/HelloWorldBean!com.foshanshop.ejb3.HelloWorld"
前面是实现接口的类,后面是接口全名