Ejb는 서버 측 소프트웨어 구성 요소라고도 하는 Enterprise Java Bean 구성 요소로 표시됩니다. 주로 애플리케이션의 비즈니스 로직으로 사용됩니다. 런타임 환경에 사용되는 웹 컨테이너에는 소프트웨어 구성 요소, 컴퓨터 보안, 서블릿 수명주기 관리, 트랜잭션 처리 및 웹 서비스가 포함됩니다. EJB는 컴퓨터 네트워크의 서버 측에서 실행되는 Java 프로그래밍 언어로 작성된 아키텍처 스타일이므로 애플리케이션에서는 클라이언트-서버 모델을 따랐습니다. 또한 ejb는 웹 컴포넌트를 클라이언트 측에 배포하는 Java Bean 기술로 여러 웹 애플리케이션에서 재사용 가능한 컴포넌트라는 기능을 가지고 있습니다.
무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
구문:
Java 프로그래밍에서 EJB 모델의 기본 구문은 다음과 같습니다.
import javax.ejb.*; import java packages; class classname { Main method() { -----Some programming logics---- } }
위 코드는 ejb 패키지를 사용하여 애플리케이션을 개발하기 위한 기본 단계입니다.
다음은 언급된 예시입니다.
인터페이스:
package JPAEJB; import java.util.List; import javax.ejb.Remote; @Remote public interface CustomerInterface { void addBooks(String name); List getBooks(); }
구현:
import java.util.ArrayList; import java.util.List; import javax.ejb.Stateless; import JPAEJB.CustomerInterface; @Stateless public class CustomerClass implements CustomerInterface { List<String>books; public CustomerClass() { books = new ArrayList<String>(); } public void addBooks(String name) { books.add(name); } public List<String> getBooks() { return books; } }
고객 인터페이스:
import JPAEJB.CustomerInterface; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; import java.util.Properties; import javax.naming.InitialContext; import javax.naming.NamingException; public class CustomerInterfaceImplem { BufferedReader brConsoleReader = null; Properties p; InitialContext c; { p = new Properties(); try { p.load(new FileInputStream("jndi.properties")); } catch (IOException ex) { ex.printStackTrace(); } try { c = new InitialContext(p); } catch (NamingException ex) { ex.printStackTrace(); } brConsoleReader = new BufferedReader(new InputStreamReader(System.in)); } public static void main(String[] args) { CustomerInterfaceImplem cust = new CustomerInterfaceImplem(); cust.testStatelessEjb(); } private void show() { System.out.println("Welcome to my domain"); System.out.print("Options \n1. Add the Books\n2. Exit \nEnter your Choice: "); } private void StatelessEjb() { try { intc = 1; CustomerInterface cust = (CustomerInterface)ctx.lookup("CustomerInterface/remote"); while (c != 2) { String books; show(); String str = brConsoleReader.readLine(); c = Integer.parseInt(str); if (c == 1) { books = brConsoleReader.readLine(); cust.addBooks(books); }elseif (c == 2) { break; } } List<String>books1 = cust.getBooks(); System.out.println(books1.size()); for (inti = 0; i<books1.size(); ++i) { System.out.println((i+1)+". " + books1.get(i)); } CustomerInterface cust1 = (CustomerInterface)ctx.lookup("cust/remote"); List<String>books2 = cust.getBooks(); System.out.println(books2.size()); for (inti = 0; i<books2.size(); ++i) { System.out.println((i+1)+". " + books2.get(i)); } } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } finally { try { if(brConsoleReader !=null) { brConsoleReader.close(); } } catch (IOException ex) { System.out.println(ex.getMessage()); } } } }
샘플 출력:
웹 서비스의 EJB:
package JPAEJB; import java.util.List; import Customers.CustomerInterfaceImplem; public class Ejbclients{ public static void main(String[] args) { for(CustomerInterface cust:getBooks()) { System.out.println(cust.getBooks()); } } private static List <CustomerInterface> getBooks() { CustomerInterfaceImplem s = new CustomerInterfaceImplem(); CustomerInterface c = s.getCustomerInterfacePort(); return c.getBooks(); } }
EJB 보안:
import javax.ejb.* @Stateless @DeclareRoles({"customer""books"}) public class CustSecurity implements CustomerInterface { @RolesAllowed({"books"}) public void delete(CustomerInterface cust) { System.out.println("customer delete the books"); } @PermitAll public void showBooks(CustomerInterface cust) { System.out.println("customer viewed the books"); } @DenyAll public void deleteAll() { System.out.println("customer delete all the books in libraries"); } }
보안 XML:
<?xml version="1.0"encoding="UTF-8"?> <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN""http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd"> <ejb-jar> <security-role-mapping> <role-name>customer</role-name> <group-name>customer-groups</group-name> </security-role-mapping> <security-role-mapping> <role-name>Books</role-name> <group-name>Books-group</group-name> </security-role-mapping> <enterprise-beans/> </ejb-jar>
설명: 위 세 가지 예는 우리가 사용하는 ejb 첫 번째 예의 다른 기능을 사용한 것과 동일한 출력입니다. 고객은 우리가 사용하는 jndi(java naming 디렉토리 인터페이스)를 사용하여 책을 추가 및 삭제합니다. 고객을 위한 웹 서비스는 웹 최종 예제를 통해 작업을 수행했으며 추가 보안을 사용했습니다.
일반적으로 EJB는 비즈니스 로직 애플리케이션 외부의 인터페이스 역할을 합니다. 다른 비즈니스 로직 프레임워크와 비교할 때 보안 측면에서 브라우저 호환성 기능이 더 뛰어납니다. 또한 시스템 수준의 트랜잭션도 유지합니다.
위 내용은 자바의 EJB의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!