EJB-웹 서비스

EJB 3.0은 세션 EJB를 웹 서비스로 노출하는 옵션을 제공합니다. @WebService 주석은 클래스를 웹 서비스 끝점으로 표시하는 데 사용되며 @WebMethod는 메서드를 웹 메서드로 클라이언트에 노출하는 데 사용됩니다.

@Stateless
@WebService(serviceName="LibraryService")
public class LibraryPersistentBean implements LibraryPersistentBeanRemote {
	
   ...
   @WebMethod(operationName="getBooks")
   public List<Book> getBooks()  {    
      return entityManager.createQuery("From Books").getResultList();
   }
   ...
}

예제 애플리케이션

EJB 3.0에서 blob / clob 지원을 테스트하기위한 테스트 EJB 애플리케이션을 만들어 보겠습니다.

단계 기술
1

EJB-애플리케이션 만들기 장에 설명 된대로 com.tutorialspoint.entity 패키지 아래에 EjbComponent라는 이름으로 프로젝트를 만듭니다. EJB 개념의 clob / blob 객체를 이해하려면이 장에서 EJB-지속성 장에서 만든 프로젝트를 사용하십시오.

2

com.tutorialspoint.stateless 패키지 아래에 LibraryPersistentBean.java를 생성합니다. EJB-지속성 장을 참조로 사용하십시오. 나머지 파일은 변경하지 마십시오.

응용 프로그램을 정리하고 빌드하여 비즈니스 논리가 요구 사항에 따라 작동하는지 확인합니다.

4

마지막으로 JBoss Application Server에 jar 파일 형식으로 애플리케이션을 배포합니다. JBoss Application Server는 아직 시작되지 않은 경우 자동으로 시작됩니다.

LibraryPersistentBean.java

package com.tutorialspoint.stateless;

import com.tutorialspoint.entity.Book;
import java.util.List;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
@WebService(serviceName="LibraryService")
public class LibraryPersistentBean implements LibraryPersistentBeanRemote {
    
   public LibraryPersistentBean() {
   }

   @PersistenceContext(unitName="EjbComponentPU")
   private EntityManager entityManager;         

   public void addBook(Book book) {
      entityManager.persist(book);
   }    
   
   @WebMethod(operationName="getBooks")
   public List <Book> getBooks() {
      return entityManager.createQuery("From Book").getResultList();
   }
}

JBoss 애플리케이션 서버 로그 출력

10:51:37,271 INFO  [EJBContainer] STARTED EJB: com.tutorialspoint.stateless.LibraryPersistentBean ejbName: LibraryPersistentBean
10:51:37,287 INFO  [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:

	LibraryPersistentBean/remote - EJB3.x Default Remote Business Interface
	LibraryPersistentBean/remote-com.tutorialspoint.stateless.LibraryPersistentBeanRemote - EJB3.x Remote Business Interface

10:51:37,349 INFO  [EJBContainer] STARTED EJB: com.tuturialspoint.messagebean.LibraryMessageBean ejbName: BookMessageHandler
10:51:37,443 INFO  [DefaultEndpointRegistry] register: jboss.ws:context=EjbComponent,endpoint=LibraryPersistentBean
10:51:38,191 INFO  [WSDLFilePublisher] WSDL published to: file:/D:/Jboss-5.0.1/server/default/data/wsdl/EjbComponent.jar/
LibraryService3853081455302946642.wsdl

웹 서비스로 EJB에 액세스하는 클라이언트 생성

NetBeans IDE에서 ,File > New Project >카테고리에서 프로젝트 유형을 선택하고,Java, 프로젝트 유형 Java Application. 딸깍 하는 소리Next >버튼. 프로젝트 이름과 위치를 입력합니다. 딸깍 하는 소리Finish >단추. 이름을 EJBWebServiceClient로 선택했습니다.

프로젝트 탐색기 창에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭합니다. 고르다New > WebService Client.

WSDL 및 클라이언트 위치에서 이전에 만든 EJB 구성 요소 프로젝트의 LibraryPersistentBean을 다음을 사용하여 추가합니다. Add Project 버튼 compile 탭.

마침 버튼을 클릭합니다. 프로젝트 탐색기에서 다음 구조를 확인하십시오.

EJBWebServiceClient.java 생성

package ejbwebserviceclient;

public class EJBWebServiceClient {
   public static void main(String[] args) {   
   }
}

아래 그림과 같이 Web Service getBooks 웹 메소드를 선택하고 EJBWebServiceClient의 코드 창으로 드래그합니다.

아래와 비슷한 출력이 표시됩니다.

이 메소드를 사용하려면 EJBWebServiceClient 코드를 업데이트하십시오.

package ejbwebserviceclient;

public class EJBWebServiceClient {

   public static void main(String[] args) {
      for(com.tutorialspoint.stateless.Book book:getBooks()) {
         System.out.println(book.getName());
      }       
   }

   private static java.util.List
   <com.tutorialspoint.stateless.Book> getBooks() {
      com.tutorialspoint.stateless.LibraryService service = 
         new com.tutorialspoint.stateless.LibraryService();
      com.tutorialspoint.stateless.LibraryPersistentBean port = 
         service.getLibraryPersistentBeanPort();
      return port.getBooks();
   }      
}

클라이언트 실행

프로젝트 탐색기 창에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭합니다. 고르다Run. Netbeans는 클라이언트를 빌드하고 실행합니다. 다음 출력을 확인하십시오.

ant -f D:\\SVN\\EJBWebServiceClient run
init:
Deleting: D:\SVN\EJBWebServiceClient\build\built-jar.properties
deps-jar:
Updating property file: D:\SVN\EJBWebServiceClient\build\built-jar.properties
wsimport-init:
wsimport-client-LibraryPersistentBean:
files are up to date
classLoader = java.net.URLClassLoader@4ce46c
SharedSecrets.getJavaNetAccess()=java.net.URLClassLoader$7@182cdac
wsimport-client-generate:
Compiling 1 source file to D:\SVN\EJBWebServiceClient\build\classes
compile:
run:
learn java
Learn Spring
learn JSF
Learn HTML
Learn JBoss
Learn EJB
Learn Hibernate
Learn IBatis
Times Now
learn html5
Learn images
Learn Testing
Forbes
test1
BUILD SUCCESSFUL (total time: 1 second)