• Intellij Idea 创建EJB项目入门(一)


    相关软件:

    1、JBoss(jboss-as-7.1.1.Final):http://jbossas.jboss.org/downloads

    2、Intellij IDEA 13.02

    3、JDK 1.7

    4、Tomcat 6

     
    1)首先下载JBossAS,解压到C盘,如C:jboss-as-7.1.1.Final。
    3)安装完成后,在Idea中对JBoss进行热部署,可以参考:
     
    ====================================================================

    1、新建一个项目,即作业空间:

    项目名称为j2ee_ejb,项目类型为简单的Java,Next,Finish。
     
    2、点击项目名,右键 New -> Module -> 输入模块名为EBJTest -> 点击“Next” -> 选择“Web Application” 和“EJB:Enterprise Java Bean(3.2)” -> Finish:
    勾“Create ejb-jar.xml”,选择Download。
     
    3、创建一个接口:HelloWorld
    注意标注@Remote
    package com.ejb;
    
    import javax.ejb.Remote;
    
    /**
     * Created by gao on 16-3-27.
     */
    @Remote
    public interface HelloWorld {
        public String sayHello(String world);
    }

    4、创建一个无状态Bean,右击src,New -> Stateless Session Bean。

    输入名称为HelloWorld。

    实现HelloWorld接口,完成编程:

    package com.ejb;
    import javax.ejb.Stateless;
    /**
     * Created by gao on 16-3-27.
     */
    @Stateless(name = "HelloWorldEJB")
    public class HelloWorldBean implements HelloWorld {
        public HelloWorldBean() {
        }
        @Override
        public String sayHello(String world) {
            return "Hello " + world + "!";
        }
    }

    5、部署JBoss,选择JBoss -> Local

    弹出Run/Debug Configuration,输入Name为ejbtest,然后选择Deployment:

     
     
    选择右边的“+”号,选择“EJBTest:war exploded”,发现下面出现一行红色字,为出错:
     
    点“Fix”,弹出Project Structure:
     
    只需要将Output directory的目录最后以.war结尾即可。
     
    6、运行JBoss,成功部署,并生成war文件。
     
     
     此时JBoss被成功启动,浏览器输入:http://localhost:8080可以看到以下界面。
     
     
    其实这时候JBoss服务器端的代码就已经部署成功的了,如果你不想用IDEA部署的话,可以关闭IDEA 中的JBoss,将刚刚生成的war文件复制到JBoss安装目录中的statndalonedeployments,
    即C:jboss-as-7.1.1.Finalstandalonedeployments,当启动JBoss时,它会自动加载里面的项目文件。启动JBoss,点击C:jboss-as-7.1.1.Finalin下的standalone.dat文件。
     
    7、编写Java类进行测试——HelloWorldClient.java
     
    注意:JBOSS 6,7调用通过JNDI查找EJB的方法和JBOSS5不一样
    所以可以先好好参考一些文章:
     
     
    1)我本来是在一个新的Project中建立Java类测试的,但是后来发现在和EJB Module同一个Project下也是可以的,所以我就在刚刚新建的项目j2ee_ejb中新建一个Module。
    点击项目名j2ee_ejb,右键 -> New -> Module -> 选择Java -> 输入Module名称“EJBTestJava” -> Next -> Finish。
     
     
    2)在Module下新建一个文件夹lib,复制粘贴两个jar包,一个是从刚刚生成的EJB文件中,将javax.ejb-api.jar复制进来,另外一个是从JBoss安装路径中,即从C:jboss-as-7.1.1.Finalinclient目录中复制jboss-client.jar。
     
    3)新建一个接口HelloWorld,即和EJB项目中的接口一样,包括包名:
    package com.ejb;
    import javax.ejb.Remote;
    /**
     * Created by gao on 16-3-28.
     */
    @Remote
    public interface HelloWorld {
        public String sayHello(String world);
    }

    4)新建一个测试类

    import com.ejb.HelloWorld;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import java.util.Hashtable;
    public class HelloWorldClient {
        public static void main(String[] args) throws NamingException {
    //        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);
    //            HelloWorldRemote helloworld = (HelloWorldRemote) ctx
    //                    .lookup("HelloWorld/remote");
    //            System.out.println(helloworld.sayHello("World"));
    //            System.out.println(helloworld.sayHello("China"));
    //        } catch (NamingException e) {
    //            e.printStackTrace();
    //        }
            HelloWorld helloWorld = lookupRemoteStatelessEjbBean();
            System.out.println(helloWorld);
            String s = helloWorld.sayHello("world");
            System.out.println(s);
        }
        private static HelloWorld lookupRemoteStatelessEjbBean() throws NamingException {
            final Hashtable jndiProperties = new Hashtable();
            jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
            final Context context = new InitialContext(jndiProperties);
            final String appName = "";
            final String moduleName = "EJBTest_war_exploded";
            final String distinctName = "";
            final String beanName = "HelloWorldEJB";
            final String viewClassName = HelloWorld.class.getName();
            final String namespace = "ejb:" + appName + "/" + moduleName
                    + "/" + distinctName + "/" + beanName + "!" + viewClassName;
            System.out.println(namespace);
            return (HelloWorld) context.lookup(namespace);
            /*
               return (RemoteCounter) context.lookup("ejb:" + appName + "/" + moduleName
                + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful");
            */
        }
     }
    注意:注释掉的是JBoss5之前的访问模式,可以对比一下。
     
    5)在src路径下新建一个文件:jboss-ejb-client.properties,注意最后的username和password换上你在安装JBoss时新建的用户名和密码。
    endpoint.name=client-endpoint
    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
    remote.connection.default.username=yang
    remote.connection.default.password=123456

    6)项目目录:

    7)运行测试。注意,这时JBoss是已经启动的了,你可以在IDEA启动,也可以用JBoss的命令启动。
    直接点击HelloWorldClient类名,右键,选择Run "HelloWorldClient... "即可。
     
    运行结束后可在控制台中看到以下输出:
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    逆序数 POJ 2299 Ultra-QuickSort
    DP URAL 1244 Gentlemen
    找规律 SGU 107 987654321 problem
    找规律 SGU 126 Boxes
    DP VK Cup 2012 Qualification Round D. Palindrome pairs
    模拟 Coder-Strike 2014
    模拟 Codeforces Round #203 (Div. 2) C. Bombs
    DFS HDOJ 2614 Beat
    最短路(Floyd_Warshall) POJ 2240 Arbitrage
    最短路(Floyd_Warshall) POJ 1125 Stockbroker Grapevine
  • 原文地址:https://www.cnblogs.com/yangyquin/p/5328344.html
Copyright © 2020-2023  润新知