IDEA使用JBoss7.1.1容器启动EJB项目Demo

        今年是2022年了,现在用到EJB架构的项目已经不多了,多是遗留的老项目,这不,手头就遇到一个。找了一些资料,自己也手动练习一下基础的搭建。

        在开始,介绍一下搭建环境使用的工具及版本:

  •  JDK版本:jdk1.7.0_64
  •  JBOSS版本:jboss-as-7.1.1.Final
  •  开发工具:IDEA 2018.3

 关于JBoss安装搭建参考:jboss-as-7.1.1.Final安装及控制台登录(windows环境)

下面正式开始环境搭建工作。

1.创建一个Java项目

(1)File -> New -> Project -> Java

(2)Jdk选择1.7的版本,next ->

 (3)直接 next ->

(4)编辑 Project Name(项目名称 )、Project location(项目路径),点击 Finish 完成项目创建。 

(5)如果出现下面弹窗,选择 "OK". 

现在创建的只是一个空的java项目,下面开始增加模块。

2.在EJBDemo下创建一个服务 Module,名称EJBServer

(1)选择刚才创建的项目,右键 -> New -> Module

(2)按照如下步骤选择配置项:最后点击 Next。 

(3)编辑项目模块名称, 点击 Finish 完成模块创建。

(4)创建完成后的文件目录如下:

3.编写服务代码 

(1)创建接口文件 HelloWorld.java

package com.ejb.server;

import javax.ejb.Remote;

@Remote
public interface HelloWorld {

    public String hello(String word);
}

(2)创建无状态bean文件 HelloWorldBean.java

这个可以根据接口来创建无状态的Bean类,如下截图操作步骤:

命名只用输入接口类名称就行:

 代码如下:

package com.ejb.server;

import javax.ejb.Stateless;

@Stateless(name = "HelloWorldEJB")
public class HelloWorldBean implements HelloWorld{
    public HelloWorldBean() {
    }

    @Override
    public String hello(String word) {
        return "hello " + word;
    }
}

创建完成后的目录结构如下:

4.启动服务

(1)配置JBoss服务

选择JBoss服务,创建 Local 服务,重新命名 EJBServer

“Server”页签的配置:

“Deployment”页签的配置:

(2)启动项目:

打印如下日志则表示成功:

 =======================================================================

如果出现如下报错:

那是因为IDEA环境中有JDK版本未设置,修改以下两个地方:

第一个:File -> Project Structure

 第二个:File -> settings -> Build,Execution,Deployment -> Compiler -> Java Compiler

  =======================================================================

 (3)控制台验证

浏览器输入 http://localhost:8080  打开控制台页面:

点击“Adminstrator Console” 出现下面输入账号密码页面,输入JBoss设置的管理员账号密码

看到发布的服务已经在列表中:

 5.在EJBDemo下创建一个客户端 Module,名称EJBClient

(1)创建项目

注意:这里创建 Java 项目就可以了。

 编辑工程名称:

 (2)在项目下创建目录 lib

在lib目录引入jar包,一个是EJBServer项目lib目录下的 javax.ejb-api.jar, 另一个是在Jboss中,目录是 C:\Java\JBoss\jboss-as-7.1.1.Final\bin\client\jboss-client.jar

 (3)将EJBServer项目src下的文件拷贝到EJBClient 下

(4)在EJBClient 项目src下创建客户端测试类

测试类com.ejb.client.HelloWorldClient.java

package com.ejb.client;

import com.ejb.server.HelloWorld;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Properties;

public class HelloWorldClient {
    public static void main(String[] args) throws NamingException {
        Properties props = new Properties();
        props.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
        props.put("jboss.naming.client.ejb.context",true);
        try {
            InitialContext ctx = new InitialContext(props);

            String appName = "";
            String moduleName = "EJBServer_war_exploded";
            String distinctName = "";
            String beanName = "HelloWorldEJB";
            String viewClassName = HelloWorld.class.getName();
            String namespace = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName;
            //String namespace = "ejb:/EJBServer_war_exploded/HelloWorldEJB!com.ejb.server.HelloWorld";
            HelloWorld helloworld = (HelloWorld) ctx.lookup(namespace);
            System.out.println(helloworld.hello("New World"));
        } catch (NamingException e) {
            e.printStackTrace();
        }

    }
}

上述参namespace就是EJBserver启动时,控制台打印项“java:jboss/exported”后的内容:

(5)在src下增加配置文件jboss-ejb-client.properties,内容如下:

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=admin
remote.connection.default.password=123456

(6)文件目录如下:

(7)执行main方法

(完)

测试代码下载:1.1.EJBDemo源代码7

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值