Mac下MyEclipse2015安装JBoss7,MySQL,EJB开发

实验环境

Mac OSX 10.11.4(Windows基本一样)

JDK:1.7

1. 安装MySQL 5.7.12

  1. 下载MySQL:
    http://dev.mysql.com/downloads/mysql

    选择 Generally Available (GA) Release 下的 Mac OS X 10.11 (x86, 64-bit), DMG Archive

    然后傻瓜式安装,安装后可在 系统偏好设置 中找到 MySQL ,启动或者关闭服务

  2. 安装完后可用 MySQLWorkBench 建立数据库 test
  3. 并再 test 里建立 student
  4. 表字段为 id (int PK NN), name (varchar)
  5. 随便添加点数据

注:安装后会出现一个提醒,内容为root用户的临时密码(在…root@localhost:之后)

修改root密码步骤:

1) 打开终端
2) 输入 cd /usr/local/mysql/bin/
3) 输入 ./mysqladmin -u root -p password
4) 输入刚才的临时密码
5) 输入新密码

2. 安装JBoss 7.1

  1. 下载JBoss 7:
    http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.tar.gz

  2. 下载后解压到任意目录(JBOSS_HOME

  3. 打开MyEclipse2015的Preferences

    -> MyEclipse

    -> Servers

    -> Server Runtime Environments

    -> Add…

    -> JBoss AS 的 JBoss 7.0 Runtime

    -> next

    -> Browse 选择解压后的目录

    -> Finish

  4. 在Servers窗口中启动JBoss,浏览器中输入 http://localhost:8080 打开主页即表示成功

在JBoss7中配置MySQL数据源
  • 首先进入JBoss安装目录,即 JBOSS_HOME 下,进入modules/com/,新建mysql文件夹,进入,建立main文件夹,进入
  • 在main目录下放入JDBC的驱动 mysql-connector-java-5.1.38-bin.jar
  • 在main目录下新建文件 module.xml ,记录了添加模块的相关配置,代码如下。其中module节点的name就是建立的文件夹路径,resources表示mysql驱动的路径,添加内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql">
<resources>
    <resource-root path="mysql-connector-java-5.1.38-bin.jar"/>
</resources>
<dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
    <module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>
  • 进入JBoss安装目录,即 JBOSS_HOME 下,进入 standalone/configuration 目录中的 standalone.xml 文件,找到datasources子系统,修改配置如下,其中jndi-name表示数据源名称:
<subsystem xmlns="urn:jboss:domain:configadmin:1.0"/>
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
    <datasources>
        <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
            <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
            <driver>h2</driver>
            <security>
                <user-name>sa</user-name>
                <password>sa</password>
            </security>
        </datasource>
        <datasource jta="true" jndi-name="java:/MySqlDS" pool-name="MySqlDS_Pool" enabled="true" use-java-context="true" use-ccm="true">
            <connection-url>jdbc:mysql://localhost:3306/test</connection-url>
            <driver>mysql</driver>
            <security>
                <user-name>root</user-name>
                <password>yourPassword</password>
            </security>
            <timeout>
                <idle-timeout-minutes>0</idle-timeout-minutes>
                <query-timeout>600</query-timeout>
            </timeout>
        </datasource>
        <drivers>
            <driver name="h2" module="com.h2database.h2">
                <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
            </driver>
            <driver name="mysql" module="com.mysql">
                <driver-class>com.mysql.jdbc.Driver</driver-class>
                <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
            </driver>
        </drivers>
    </datasources>
</subsystem>
  • 找到jpa子系统,修改配置如下,注意datasource与上面jndi名称一致:
<subsystem xmlns="urn:jboss:domain:jpa:1.0">
    <jpa default-datasource="java:/MySqlDS"/>
</subsystem>
  • 若以上配置成功,则在JBoss7不部署任何EJB的情况下启动不会报错,查看JBOSS_HOME/modules/com/mysql/main/路径,会发现生成了mysql-connector-java-5.1.38-bin.jar.index文件,表示该模块添加成功。

3. 安装MyEclipse 2015

  1. 下载 myeclipse-2015-stable-1.0-offline-installer-macosx.dmg
  2. 破解(参见 点我

4. MyEclipse 2015创建JBoss7服务器

  1. 在Servers窗口中(若没有该窗口,则Window -> Show View -> Other… -> 搜索Servers)

    右键 New

    -> Server

    -> 选择JBoss AS 下的 JBoss AS v7.x

    -> Server runtime environment 选择 JBoss 7.0 Runtime 然后点 next

    -> Configuration中选择 standalone.xml

    -> next -> finish

5. EJB 服务器端

  • 新建一个EJB Project命名为FirstEJBProject
  • 在工程 META-INFO 目录下新建 persistence.xml 文件,该文件用来配置数据源,内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
    <!-- Name属性用于定义持久化单元的名字 (name必选,空值也合法) -->
    <persistence-unit name="Data" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <!-- Jta-data-source 用于指定持久化提供商使用的JTA数据源的全局JNDI名称(可选) -->
    <jta-data-source>java:/MySqlDS</jta-data-source>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
    </properties>
    </persistence-unit>
</persistence>
  • 在firstejbproject 包下新建实体Bean:StudentEntity.java
package firstejbproject;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity  //表明这是一个实体Bean
@Table (name = "student" ) //和数据库表student 建立映射
public class StudentEntity implements Serializable {

    private static final long serialVersionUID = 4002145187978562529L;

    @Id // 表明是该实体的id
    @GeneratedValue(strategy = GenerationType. AUTO ) //id生成策略
    @Column(name = "id" )//对应student表id字段
    private int id ; 

    @Column(name = "name" ) // 对应student表name字段
    private String name;

    public int getId() {
        return id ;
    }

    public String getName() {
        return name ;
    }

    public void setId(int id) {
        this .id = id;
    }

    public void setName(String name) {
        this .name = name;
    }

}
  • 在firstejbproject 包下新建接口:BaseOperation.java
package firstejbproject;

import java.util.List;

public interface BaseOperation {
    public List<?> findAll();
}
  • 在firstejbproject 包下新建会话Bean:StudentDaoBean.java
package firstejbproject;

import java.util.Iterator;
import java.util.List;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless //这是一个无状态Bean
@Remote (BaseOperation. class) //指明Bean的remote接口
public class StudentDaoBean implements BaseOperation {

    // EntityManager是由EJB容器自动配置和管理的,unitName属性的值对应persistence.xml 中<persistence-unit name="Data" transaction-type="JTA"> name的配置
    @PersistenceContext(unitName="Data")
    private EntityManager em;

    @SuppressWarnings("unchecked")
    public List<?> findAll() {
        System. out .println("Start..." );
        List<StudentEntity> list = em.createQuery("from StudentEntity").getResultList();
        if (list != null) {
            Iterator<StudentEntity> it = list.iterator();
            while (it.hasNext()) {
                StudentEntity student = it.next();
                System.out.println("Id:" + student.getId());
                System.out.println("Name:" + student.getName());
            }
        }
        System.out.println("End...." );
        return list;
    }

}
  • 在Servers中的JBoss服务中,右键 -> Add/Remove Deployments… 添加 FirstEJBProject项目,并启动服务,若出现 Deployed “FirstEJBProject.jar” 则表明部署成功。

6. EJB 客户端

  • 先在服务器端的实体Bean和接口打包成jar包,ejbinterface.jar:选择 BaseOperation.java 和 StudentEntity.java

    右键 -> Export -> Java中的JAR file -> next -> 在export destination中选择一个路径,并命名为 ejbinterface.jar
  • 新建一个Java project,命名为 FirstEJBClient
  • 在 src 下新建包名 com.test
  • 新建文件 EJBTest.java:
package com.test;

import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import firstejbproject.BaseOperation;
import firstejbproject.StudentEntity;

public class EJBTest {

    public static void main(String[] args) {

        System.out.println("test...");
        Properties props = new Properties();
        props.setProperty(Context. URL_PKG_PREFIXES, "org.jboss.ejb.client.naming" );
        try {
            Context context = new InitialContext(props);
            // 这里需要注意字符串的写法:ejbservice 表示ejb的包名,StudentDaoBean表示咱们实际调用的会话Bean,org.easynoder.ejb2.dao.BaseOperation表示 对应的接口
            BaseOperation op = (BaseOperation) context
                    .lookup("ejb:/FirstEJBProject//StudentDaoBean!firstejbproject.BaseOperation");
            List<StudentEntity> list = (List<StudentEntity>) op.findAll();

            Iterator<StudentEntity> it = list.iterator();
            while (it.hasNext()) {
                StudentEntity student = it.next();
                System.out.println("Id: " + student.getId());
                System.out.println("Name: " + student.getName());
            }
        } catch (NamingException e) {
            e.printStackTrace();
        }
    }
}
  • 将刚才导出的 ejbinterface.jarjboss-client.jar(该文件在 JBOSS_HOMEbin/client 目录下)放到该工程src下
  • 右键该工程名 -> Build Path -> Configure Build Path.. -> Add JARs.. 选择服务器端工程文件下的这两个jar包 -> ok
  • 在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=root
remote.connection.default.password=yourPassword
  • 右键EJBTest.java -> Run As -> Java Application 如果出现学生信息则表示成功!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值