相关软件:

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... "即可。
 
运行结束后可在控制台中看到以下输出:
 
 
 
 
 
 
 
 
 
 
 
 

Intellij Idea 创建EJB项目入门(一)的更多相关文章

  1. Intellij Idea 创建Web项目入门(一)转

    Intellij Idea 创建Web项目入门(一) 相关软件: Intellij Idea14:http://pan.baidu.com/s/1nu16VyD JDK7:http://pan.bai ...

  2. Intellij Idea 创建Web项目入门(一)

    相关软件: Intellij Idea14:http://pan.baidu.com/s/1nu16VyD JDK7:http://pan.baidu.com/s/1dEstJ5f Tomcat(ap ...

  3. Intellij Idea 创建JavaWeb项目入门(一)

    Idea创建JavaWeb项目步骤:1.打开Intellij Idea IDE,然后点击Create New Project 2.左侧选择Java Enterprise,右侧选择Web Applica ...

  4. Intellij Idea 创建Web项目入门

    相关软件: Intellij Idea14:http://pan.baidu.com/s/1nu16VyD JDK7:http://pan.baidu.com/s/1dEstJ5f Tomcat(ap ...

  5. 修改Intellij Idea 创建maven项目默认Java编译版本

    在使用Intellij Idea 创建Maven项目时,默认的Java Language是1.5,虽然可以在Project Structrue中修改,但是每次pom.xml文件有变化时,工程又会重置到 ...

  6. JavaEE——Intellij Idea 创建JavaWeb项目

    原文:JavaEE--Intellij Idea 创建JavaWeb项目 折腾Tomcat折腾了两个晚上,第一个晚上怎么都进不了Tomcat的首页,第二个晚上进去了,但是新建的Web项目,在浏览器中运 ...

  7. IntelliJ IDEA创建java项目

    IntelliJ IDEA创建java项目 进入到IntelliJ IDEA启动界面,点击Create New Project 2.这样就进入到了创建项目页面,这里可以创建好多项目,这里我们以java ...

  8. 解决IntelliJ IDEA 创建Maven项目速度慢问题

    IntelliJ IDEA 创建maven项目速度很慢,甚至卡住不动了. 原因 IDEA根据maven archetype的本质,其实是执行mvn archetype:generate命令,该命令执行 ...

  9. 一、IntelliJ IDEA创建java项目

    一.IntelliJ IDEA创建java项目 二.IntelliJ IDEA下载并包含jdbc包 1.下载zip格式的驱动包:https://dev.mysql.com/downloads/conn ...

随机推荐

  1. 1066. Root of AVL Tree (25)

    An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...

  2. linux终端io笔记

    简介 终端的两种工作模式:以行为单位的工作模式,以字符数或时间为单位自定义模式 终端判断函数: int isatty(int fd) 终端属性的获取与设置: int tcgetattr(int fd, ...

  3. Mininet安装及使用

    最简单的方法是开始 下载一个预包装Mininet / Ubuntu VM . 这个虚拟机包括Mininet本身,所有预装OpenFlow二进制文件和工具,调整内核配置,以支持更大的Mininet网络. ...

  4. matlab实现雅可比、高斯塞德尔、后项误差计算

    稀疏矩阵生成: function [a, b] = aparsesetup(n) e = ones(n, 1); n2 = n / 2; a = spdiags([-e 3*e -e], -1:1, ...

  5. Java反射在JVM的实现

    1. 什么是Java反射,有什么用?反射使程序代码能够接入装载到JVM中的类的内部信息,允许在编写与执行时,而不是源代码中选定的类协作的代码,是以开发效率换运行效率的一种手段.这使反射成为构建灵活应用 ...

  6. D3js

    http://d3js.org http://blog.csdn.net/lzhlzz/article/details/27497157

  7. Web开发从零单排之二:在自制电子请帖中添加留言板功能,SAE+PHP+MySql

    在上一篇博客中介绍怎样在SAE平台搭建一个html5的电子请帖网站,收到很多反馈,也有很多人送上婚礼的祝福,十分感谢! web开发从零学起,记录自己学习过程,各种前端大神们可以绕道不要围观啦 大婚将至 ...

  8. NodeJS - Express 3.0下ejs模板使用 partial展现 片段视图

    如果你也在看Node.js开发指南,如果你也在一步一步实现 microBlog 项目!也许你会遇到本文提到的问题,如果你用的是Express 3.0 本书实例背景是 Express 2.0 而如今升级 ...

  9. oracle中事务处理

    事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败. 事务和锁 当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户改表的结构 ...

  10. bnuoj 25662 A Famous Grid (构图+BFS)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=25662 #include <iostream> #include <stdio.h ...