zoukankan      html  css  js  c++  java
  • JBoss+Ant实现EJB无状态会话bean实例

            EJB分为session bean、entity bean、message-driven bean,session bean又分为无状态会话bean和有状态会话bean。

       session bean负责与client交互。是编写业务逻辑的地方,在session bean中能够通过jdbc直接操作数据库,但大多数情况下都是通过entity bean来完毕对数据库的操作的。

       寻常,我们使用最多的是无状态bean,由于它的bean实例可供多个用户使用,所以它的性能比有状态bean高。正由于一个bean实例被多个用户使用。

    那么。前一个用户设置的值有可能被后一个用户所改动,所以它无法正确保存某个用户设置的值,由于是无状态的。

    以下用一个JBoss+Ant实现EJB无状态会话bean实例,帮助大家初步认识EJB。

       1.创建一个普通的java项目。创建时引用jboss-4.2.3.GAclient文件夹下的全部jar包。

       2.创建一个HelloWorld接口;

    package cn.tgb.ejb3;
    
    public interface HelloWorld {
    
    	public String sayHelloWorld(String name);
    }

           3.创建一个实现HelloWorld接口的实现类;

    package cn.tgb.ejb3.impl;
    
    import javax.ejb.Remote;
    import javax.ejb.Stateless;
    
    import cn.tgb.ejb3.HelloWorld;
    
    @Stateless
    @Remote(HelloWorld.class)
    public class HelloWorldBean implements HelloWorld {
    
    	@Override
    	public String sayHelloWorld(String name) {
    		return name + "说:你好。世界!

    "; } }

            在HelloWorldBean类中。我们用注解Stateless注明当前类是无状态的,用注解Remote注明当前类对外提供的远程訪问接口。


       4.在项目的src文件夹下新建build.xml文件,用Ant管理项目的构建过程;

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="HelloWorld" basedir=".">
    	<property name="src.dir" value="${basedir}/src" />
    	<property name="build.dir" value="${basedir}/build" />
    	<property environment="env" />
    	<property name="jboss.home" value="${env.JBOSS_HOME}" />
    	<property name="jboss.server.config" value="default" />
    	<path id="build.classpath">
    		<fileset dir="${jboss.home}/client">
    			<include name="*.jar" />
    		</fileset>
    	</path>
    	<target name="prepare">
    		<delete dir="${build.dir}" />
    		<mkdir dir="${build.dir}" />
    	</target>
    	<target name="compile" depends="prepare" description="编译EJB工程">
    		<javac srcdir="${src.dir}" destdir="${build.dir}">
    			<classpath refid="build.classpath" />
    		</javac>
    	</target>
    	<target name="ejbjar" depends="compile" description="EJB工程打包">
    		<jar jarfile="${basedir}/${ant.project.name}.jar">
    			<fileset dir="${build.dir}">
    				<include name="**/*.class" />
    			</fileset>
    		</jar>
    	</target>
    	<target name="deploy" depends="ejbjar" description="公布EJB工程">
    		<copy file="${basedir}/${ant.project.name}.jar" todir="${jboss.home}/server/${jboss.server.config}/deploy" />
    	</target>
    	<target name="undeploy" description="卸载EJB">
    		<delete file="${jboss.home}/server/${jboss.server.config}/deploy/${ant.project.name}.jar" />
    	</target>
    </project>
        5.在eclipse的Outline窗体选中deploy,右键run as Ant build。运行此操作后,Ant会在当前项目根文件夹和jboss-4.2.3.GAserverdefaultdeploy文件夹生成项目的jar文件;

       6.启动JBossserver;

       7.在其他项目中通过JNDI调用EJB无状态会话bean提供的方法;

    package com.tgb.test;
    
    import java.util.Properties;
    
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    
    import cn.tgb.ejb3.HelloWorld;
    
    public class EJBClient {
    
    	public static void main(String[] args) {
    		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");
    		try {
    			InitialContext ctx = new InitialContext(props);
    			HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
    			System.out.println(helloworld.sayHelloWorld("北京"));
    		} catch (NamingException e) {
    			System.out.println(e.getMessage());
    		}
    	}
    }
           到此,我们完毕了EJB无状态会话bean的实例创建过程,希望能帮助大家进步。


  • 相关阅读:
    python __path__ 变量
    mysql-5.7.9 shutdown 语法详解
    scikit-learn随机森林调参小结
    supervisor安装部署文档和管理实例
    随机森林种类及区别--g1
    决策树算法原理--good blog
    各种排序算法的时间复杂度
    【Django2.0】python manage.py makemigrations 和 python manage.py migrate的区别
    使用Apollo做配置中心
    lock in share mode 和 select for update
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5211722.html
Copyright © 2011-2022 走看看