EJB 기본 비동기식 호출
비동기적인 방법은 두 가지 반환 유형이 있는데 하나는void이고, 하나는Future
package asyncejb;
import java.time.LocalDateTime;
import javax.ejb.Asynchronous;
import javax.ejb.Stateless;
@Stateless
public class AsyncEjb {
@Asynchronous
public void run(){
System.out.println("EJB "+LocalDateTime.now());
}
}
servlet에서 호출하면
package asyncejb;
import java.io.IOException;
import java.time.LocalDateTime;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/async.html")
public class AsyncServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@EJB
private AsyncEjb asyncEjb;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
asyncEjb.run();
System.out.println("Servlet " +LocalDateTime.now());
}
}
컨트롤러에 따라 정보를 출력할 수 있습니다. 코드 순서상 EJB를 먼저 호출하고 servlet을 호출하지만 먼저 실행하는 것은 servlet이고 나중에 실행하는 것은 EJB입니다.
10:12:13,670 INFO [stdout] (default task-5) Servlet 2016-01-18T10:12:13.670
10:12:13,673 INFO [stdout] (EJB default - 3) EJB 2016-01-18T10:12:13.673
사실 비동기적인 용도는 어디에 있습니까?
비동기화는 대량의 작업에 사용되며 결과를 직접 되돌려 사용자의 기다림을 피할 수 있다.
그러나 J2EE에 비동기적인 조작이 너무 많아서 servlet은 비동기적, EJB는 비동기적, CDI는 비동기적, 스스로 라인을 써도 비동기적입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
DI & IoC & Bean객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다. 첫번째 방법은 A객체가 B와 C 객체를 New 생성자를 통해 직접 생성하는 방법이고, 두번째 방법은 외부에서 생성된 객체를 setter()...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.