Intellij Idea 创建EJB项目入门(一)-阿里云开发者社区

开发者社区> 杰克.陈> 正文

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

简介: 原文: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。
+关注继续查看
原文: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安装目录中的statndalone\deployments,
即C:\jboss-as-7.1.1.Final\standalone\deployments,当启动JBoss时,它会自动加载里面的项目文件。启动JBoss,点击C:\jboss-as-7.1.1.Final\bin下的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.Final\bin\client目录中复制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... "即可。
 
运行结束后可在控制台中看到以下输出:
 
 
 
 
 
 
 
 
 
 
 
 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
冬季实战训练营-第一期-学习报告
冬季实战训练营-第一期-学习报告
11 0
Caffeine缓存 最快缓存 内存缓存
Caffeine是一个进程内部缓存框架 最快缓存 内存缓存
18 0
【mockito】单元测试之mockito简单使用
项目使用的是springmvc+mybatis 开发; mock包为 mockito-all;虽然也引用了powermock,但截至目前,还未使用到;如果使用到后续再补相关笔记。
15 0
浅谈我对DDD领域驱动设计的理解
DDD的全称为Domain-driven Design,即领域驱动设计。下面我从领域、问题域、领域模型、设计、驱动这几个词语的含义和联系的角度去阐述DDD是如何融入到我们平时的软件开发初期阶段的。要理解什么是领域驱动设计,首先要理解什么是领域,什么是设计,还有驱动是什么意思,什么驱动什么。
12 0
学习报告 冬季实战营第一期:从零到一上手玩转云服务器
冬季实战营第一期:从零到一上手玩转云服务器-本期学习报告
18 0
flutter项目如何打包(android)
打包前要做的 1.更换图标 andriod–》app–app–》src—》main-》Java----》res–》minpmap
11 0
云起第一期学习体会(报告)
云起第一期学习体会(报告)
25 0
云起实验室学习报告之LAMP搭建
云起实验室学习报告之LAMP搭建
18 0
flutter开发之必须掌握的dart知识点:list,set,map
要说,List在我的开发使用中,确实是最为频繁的了,那么如何使用list,也就成了一个问题,list提供的方法又有哪些 这些都是需要掌握理解的。 首先第一个, 对于固定长度的list,如何删除添加元素呢
10 0
+关注
杰克.陈
一个安静的程序猿~
10427
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载