JBOSS(4.2、7.1)+eclipse+EJB3

来源:互联网 发布:net域名怎么样 编辑:程序博客网 时间:2024/06/07 10:59

1、JBOSSeclipse的集成

(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"

前面是实现接口的类,后面是接口全名