서버에 Java를 배치하는 EJB 구성 요소

8628 단어 JavaEJB
EJB가 뭐예요?
EJB는 자바 기업 Bean으로 자바 EE 서버 기업 구성 요소 모델로 그의 설계 목표와 핵심 응용 프로그램은 분포식 응용 프로그램을 배치하는 것이다.말이 많지 않으니 직접 본 컴퓨터에 EJB3를 배치하는 방법을 보아라.
 
배포 환경:
운영 체제: Windows 8.1
EJB 용기: JBoss 7.1
DB: MySQL 5.6.10
IDE: MyEclipse 10
JDK: 1.6
 
1. 데이터베이스, 테이블 만들기
이 과정에서 데이터베이스와 통신해야 하기 때문에 먼저 데이터베이스 테이블을 만들어야 한다.
데이터베이스 만들기:

create database student; //  student
테이블을 만들려면 다음과 같이 하십시오.

create table student( // student    
`id` integer(11) not null, 
`name` varchar2(20) default null,
primary key (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=latin1

데이터 삽입:

insert into student values(1,'easynoder');
commit;
로컬 루트 사용자에게 접근 권한을 지정합니다.

grant all privileges on *.* to root@localhost indentified by "1234"
 
상기 절차를 통해 필요한 데이터베이스 테이블이 이미 만들어졌다.루트 사용자를 통해 모든 데이터에 접근할 수 있습니다.
 
2. 실체 Bean, 사용자 조작 인터페이스 및 세션 Bean 작성
 
EJB 프로젝트를 설립합니다. 이름은 MyEJBProject입니다.프로젝트 META-INFO 디렉토리에는 파일persistence가 포함되어 있습니다.xml 파일.이 파일은 데이터 원본을 설정하는 데 사용되며, 잠시 후에 설정합니다.
이어서 실체 빈을 만들겠습니다.

@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;
  }

}

운영 인터페이스 설정:

 public interface BaseOperation {
 
   public List<?> findAll();
 }
이 인터페이스는 단지 하나의 방법으로 모든 학생을 얻을 수 있다
 
세션 빈 만들기

@Stateless // Bean
@Remote (BaseOperation. class) // Bean remote 
public class StudentDaoBean implements BaseOperation {
   
   // EntityManager EJB ,unitName 
persistence.xml  < persistence-unit name = "MyEJBProject" transaction-type = "JTA" ></ persistence-unit > name 
  @PersistenceContext(unitName = "MyEJBProject" )
  private EntityManager em;

  @SuppressWarnings( "unchecked" )
  public List<?> findAll() {
    System. out .println(" ..." );
    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(" :" + student.getName());
      }
    }
    System. out .println(" ...." );
    return list;
  }

}

3. 데이터 소스 구성
이것은 jboss6와 jboss7의 설정이 다르다는 것을 주의해야 한다.
jboss6와 이전 버전은 deploy 디렉터리에 *-ds를 추가합니다.xml, 여기 **는 임의의 데이터베이스 이름을 나타냅니다. mysql이면 mysql-ds입니다.xml 파일.jboss7에서는 다르다.
디렉터리를 JBOSS의 설치 디렉터리로 전환합니다. 즉%JBOSS_HOME%에서modules/com 디렉터리에 들어가서 폴더 mysqldatabase를 만들고 들어가서 mysql 폴더를 만들고main 폴더를 만듭니다.
main 디렉터리에서module를 만듭니다.xml 파일, 이 프로필의 내용은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mysqldatabase.mysql">
   <resources>
     <resource-root path="mysql-connector-java-5.**-bin.jar"/>
   </resources>
   <dependencies>
     <module name="javax.api"/>
     <module name="javax.transaction.api"/>
     <module name="javax.servlet.api" optional="true"/>
   </dependencies>
</module>
특히 여기서 주의해야 할 것은module 노드 속성name의 값이 방금 우리가 만든 폴더의 경로입니다.resources는 mysql 구동 경로를 표시합니다.mysql의 드라이브를main 디렉터리에 두어야 한다는 것을 의미합니다.즉, main 디렉터리에 두 개의 파일, 모듈을 포함합니다.xml과 데이터베이스 드라이브 파일.
 
이전 단계를 완료하면%JBOSS_로 전환합니다.HOME%\standalone\configuration 디렉토리에서
standalone를 엽니다.xml, 데이터소스 검색, 아래 설정

<datasources>
        <datasource jndi-name="java:jboss/KouMySQLDS" pool-name="MySQLDS" enabled="true" use-java-context="true">
          <connection-url>jdbc:mysql://localhost:3306/student</connection-url>
          <driver>mysql</driver>
          <security>
            <user-name>root</user-name>
            <password>1234</password>
          </security>
        </datasource>
        <drivers>
          <driver name="mysql" module="com.mysqldatabase.mysql">
            <driver-class>com.mysql.jdbc.Driver</driver-class>
            <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
          </driver>
        </drivers>
      </datasources>
jndi-name는 데이터 원본 jndi의 이름을 나타내고,connection-url는 연결된 URL 문자열을 나타낸다.여기에는 기본적으로 3306 포트를 사용하고, student 라이브러리를 사용하며, 사용자 이름과 비밀번호를 첫 번째 단계로 설정합니다.모듈이 설정한 경로입니다.
 
jboss의 관련 설정이 완료되었습니다. 이어서 새로 지은 공사로 전환했습니다. 그중에persistence가 있습니다.xml 프로필, 이 파일은 다음과 같은 설정을 합니다. 그 중에서 jta-data-source는 위에서 설정한 jndi-name입니다.
 

< jta-data-source> java:jboss/KouMySQLDS </jta-data-source >
      < properties>
        < property name= "hibernate.hbm2ddl.auto" value ="validate" />
        < property name= "hibernate.jdbc.fetch_size" value ="15" />
        < property name= "hibernate.jdbc.batch_size" value ="10" />
        < property name= "hibernate.show_sql" value ="true" />
        < property name= "hibernate.format_sql" value ="true" ></ property>
      </ properties>
지금까지 서버 코드와 데이터 원본 설정이 완료되었습니다.다음은 코드를 배치하는 방법과 클라이언트에서 EJB 서비스를 호출하는 방법입니다.
 
4. EJB 서비스를 배포합니다.
이전에 프로젝트에서 쓴 모든 코드를 jar 패키지로 만들어서 jb 서비스라고 명명합니다.jar.또한 실체 Bean과 인터페이스만 jar 패키지로 포장하여 ebjinterface라고 명명합니다.jar, 이jar는 클라이언트 호출에 사용될 것입니다.
jb서비스를jar 넣기%JBOSS_HOME%\standalone\deployments 디렉토리에 있습니다.jboss가 시작되면 자동으로 이 디렉터리를 스캔합니다.그리고 이jar를 배치합니다.
 
ok, 우리는 jboss를 MyEclipse에 설정하고 MyEclipse에서 Jboss를 시작하여 컨트롤러의 출력을 관찰합니다.
Deployed "ejb 서비스.jar"라는 로그가 나타나면 ejb가 성공적으로 배치되었음을 의미합니다.
 
5. 클라이언트는 어떻게 호출합니까?
클라이언트 호출에는 다음 두 가지 필수 조건이 필요합니다.
jboss-ejb-client 도입.properties 설정, jboss-client.jar와 jbinterface.jar.그중 jboss-client.jar는 jbossbin/client 디렉터리에 있습니다.ejbinterface.jar는 우리가 방금 만든 클라이언트가 사용해야 할 인터페이스jar 패키지입니다.
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= yourUsername
remote.connection.default.password= yourPassword
 
이 두 가지 조건이 있으면 안심하고 테스트 클래스인 EJBTEst를 세울 수 있다.java, 클라이언트 작성 방법입니다.

public static void main(String[] args) {

    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:/ejbservice//StudentDaoBean!org.easynoder.ejb2.dao.BaseOperation" );
      op.findAll();
    } catch (NamingException e) {
      e.printStackTrace();
    }
  }

이 코드를 실행하면 데이터베이스에 있는 데이터를 성공적으로 조회할 수 있습니다.
 
이로써 EJB는 배치에 성공했다.

좋은 웹페이지 즐겨찾기