EJB环境配置(jboss-as-7.1.1+jdk1.8+eclipse)并编写第一个EJB程序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yogima/article/details/85219998

一、环境配置

写在前面

jdk1.8和jboss-as-7.1.1并不兼容(尽管在网上找到了有说不需要换jdk的方法,但是至少我是失败了),这里的内容是:在不改变其他项目使用jdk1.8的情况下,对jboss项目使用jdk1.7.
在这里插入图片描述

下载jboss-as-7.1.1.final并配置环境变量

官网链接
网盘链接 提取码:nq3u

配置环境变量:(右键我的电脑-属性-高级系统设置-环境变量)
1、在“系统变量”里添加JBOSS_HOME变量,值为Jboss的路径。例如我的路径在D盘根目录下,则值为D:\jboss-as-7.1.1.Final。
2、在path变量中新增:%JBOSS_HOME%\bin

验证是否配置成功:
1、打开jboss-as-7.1.1.Final下的子目录bin,运行standlone.bat,启动JBoss服务器。注意不是运行run.bat。
2、JBoss服务器启动完毕之后,打开浏览器并输入地址http://localhost:8080, 如出现JBoss欢迎页面,则表示JBoss安装并运行成功;

如果你是jdk1.8,那么安装jdk1.7并修改standlone.bat

如果是jdk1.8的话,点击standlone.bat,会卡在JBoss AS 7.1.1.Final “Brontes” starting。

1、下载jdk1.7并安装:网盘链接 提取码:0jv1
注意不需要为jdk1.7配环境
2、修改standlone.bat,下图第60行修改为 set "JAVA=你的jdk7安装路径(在安装时选择的那个)\bin\java"
在这里插入图片描述

在eclipse中安装JBoss Tools开发插件

Help -> Eclipse Marketplace -> 搜索jboss,如下图,点击右下角install
在这里插入图片描述
如果在search这里没有找到的话,那么这里的第三栏popular中也应该有它。

在弹出的窗口中选择[JBossASTools],点击按钮[Confirm],接着在安装许可协议窗口中选择accept,然后finish等它自动下载(需要联网)

eclipse配置

1、Window -> preferences -> Java -> installed JREs -> add,跳出的窗口点击next,会如下图所示:
图中的JRE name取个你自己能分辨出来哪个版本的就行,JRE home还是填jdk安装目录,和之前修改的standlone.bat中的路径一致。
在这里插入图片描述

2、依旧是Window -> preferences,然后找到server -> Runtime Environment -> add -> jboss7.1 -> next
在这里插入图片描述
注意下图框起来的地方:
Home Directory使用的是jboss的路径,和前面JBOSS_HOME的值相同
Runtime JRE这里需要选择刚才在 installed JREs那里设置的那个名称(希望你还记得)
在这里插入图片描述

二、第一个EJB程序

编写EJB工程

1、file -> new -> EJB project,这里我就叫它HelloEJB了,注意这里选择一下Target Runtime,不选的话就只能去build path里面加了
在这里插入图片描述

2、右键项目名添加包,这里我的包叫com.hello.ejb,右键包名 -> new -> session bean
这里我叫它Hello,(ps:下图中的stateless意为无状态,选择stateful则为有状态
在这里插入图片描述

3、finish之后我们看到这个包下生成了一个Hello.java和它的remote接口HelloRemote.java

HelloRemote.java:

package com.hello.ejb;

import javax.ejb.Remote;

@Remote
public interface HelloRemote {
	public String hello(String s);
}

Hello.java:

package com.hello.ejb;

import javax.ejb.Stateless;

/**
 * Session Bean implementation class Hello
 */
@Stateless
public class Hello implements HelloRemote {

    /**
     * Default constructor. 
     */
    public Hello() {
        // TODO Auto-generated constructor stub
    }

    public String hello(String s) {
    	return "hello " + s;
    }
}

将工程部署到JBoss服务器

右键工程名选择export -> EJB jar file,显示如下图所示
Browser选择路径为jboss目录下的standalone\deployments文件夹
非常重要的一点!!!如果代码有改动,那么需要重新部署,也就是重新export,不然你的客户端不会知道改动的!!
在这里插入图片描述

编写客户端工程

就建一个普通的java project,这里我们叫它HelloEJB-Client

新建包com.hello.ejb和com.hello.ejb.client
1、把刚才EJB工程文件中的HelloRemote复制到com.hello.ejb下
2、右键项目名-build path,导入jboss-client.jar包
3、在com.hello.ejb.client下新建java类HelloClient.java

package com.hello.ejb.client;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.hello.ejb.HelloRemote;


public class HelloClient {

	private static HelloRemote lookupRemoteStatelessEjbBean() throws NamingException{
		final Hashtable jndiProperties = new Hashtable(); 
		
		jndiProperties.put("jboss.naming.client.ejb.context", true);
		jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); 
		
		final Context context = new InitialContext(jndiProperties); 
		final String appName = ""; 
		//moduleName是EJB工程名
		final String moduleName = "HelloEJB"; 
		final String distinctName = ""; 
		//beanName是EJB工程下的sessionBean名
		final String beanName = "Hello"; 
		final String viewClassName=HelloRemote.class.getName(); 
		//如果EJB工程下的sessionBean是有状态的,则后面还需要加`+"?stateful"`
		final String namespace = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName; 
		return (HelloRemote) context.lookup(namespace); 
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try{ 
			//查找目录
			HelloRemote hello = lookupRemoteStatelessEjbBean(); 
			System.out.println(hello); 
			String s = hello.hello("EJB");
			System.out.println(s); 
			
		}catch(NamingException e){ 
			e.printStackTrace(); 
		}
	}

}

4、jboss-ejb-client.properties文件(放在src目录下
注意这里port是4447 但是jboss6及以前版本应该是1099

endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=127.0.0.1
remote.connection.default.port=4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

启动服务器,运行程序

servers当中启动Jboss7,如下图
在这里插入图片描述
启动成功后将会看到:
在这里插入图片描述

整体目录结构

在这里插入图片描述

另外需要注意的地方

当客户端程序是web工程时一定要右键工程名-properties-java compiler 改成1.7版本的,不然会报错。

猜你喜欢

转载自blog.csdn.net/yogima/article/details/85219998