레슨 1.2에서는 StatelessCounterBean.java 클래스에 대한 필수 클래스 및 인터페이스 작성 단계를 설명합니다.
시작하기 전에 레슨 1.1을 완료해야 합니다.
이 레슨에서는 다음을 수행합니다.
- @Interceptors 어노테이션 및 필수 종속성을 추가합니다.
- Audit.java Java™ 클래스를 작성합니다.
- 코드를 StatelessCounterBean.java 클래스에 추가합니다.
- LocalCounter.java 인터페이스 및 RemoteCounter.java 인터페이스를 작성합니다.
- Java 편집기에서 StatelessCounterBean.java 클래스를 여십시오.
- @Stateless 어노테이션 아래에 @Interceptors를 입력하십시오.
- Ctrl+S를 눌러 저장하면 @Interceptors 행 옆에 빠른 수정사항
아이콘
이 표시됩니다. 빠른 수정사항 아이콘을 마우스 오른쪽 단추로 클릭하고
빠른 수정사항을 선택하십시오.
- javax.interceptor.Interceptors 가져오기를 선택하고 CTRL+S를 눌러 저장하십시오.
- 빠른 수정사항 아이콘을 마우스 오른쪽 단추로 클릭하고 빠른
수정사항을 선택하십시오. 누락된 속성 추가를 선택하고 (value={null})을
(Audit.class)로 바꾼 후 CTRL+S를 눌러 저장하십시오.
- 빠른 수정사항 아이콘을 마우스 오른쪽 단추로 클릭하고 빠른
수정사항을 선택하십시오. 'Audit' 클래스 작성을 선택하십시오. 새 Java 클래스 작성 페이지에서
기본값을 승인하고 완료를 클릭하십시오.
- Java 편집기에서 Audit.java에 대해 기본 코드를 이 코드로
바꾼 후 CTRL+S를 눌러 저장하십시오.
// This program may be used, executed, copied, modified and distributed
// without royalty for the purpose of developing, using, marketing, or distributing.
package com.ibm.example.websphere.ejb3sample.counter;
import java.io.Serializable;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
public class Audit implements Serializable {
private static final long serialVersionUID = 4267181799103606230L;
@AroundInvoke
public Object methodChecker (InvocationContext ic)
throws Exception {
System.out.println("Audit:methodChecker - About to execute method: " + ic.getMethod());
Object result = ic.proceed();
return result;
}
}
- Java 편집기에서 StatelessCounterBean 클래스를 열고 이 코드를
바꾼 후 CTRL+S를 눌러 저장하십시오.
public class StatelessCounterBean {
}
이 코드의 경우:
public class StatelessCounterBean implements LocalCounter, RemoteCounter {
private static final String CounterDBKey = "PRIMARYKEY";
// Use container managed persistence - inject the EntityManager
@PersistenceContext (unitName="Counter")
private EntityManager em;
public int increment()
{
int result = 0;
try {
JPACounterEntity counter = em.find(JPACounterEntity.class, CounterDBKey);
if ( counter == null ) {
counter = new JPACounterEntity();
counter.setPrimaryKey(CounterDBKey);
em.persist( counter );
}
counter.setValue( counter.getValue() + 1 );
em.flush();
em.clear();
result = counter.getValue();
} catch (Throwable t) {
System.out.println("StatelessCounterBean:increment - caught unexpected exception: " + t);
t.printStackTrace();
}
return result;
}
public int getTheValue()
{
int result = 0;
try {
JPACounterEntity counter = em.find(JPACounterEntity.class, CounterDBKey);
if ( counter == null ) {
counter = new JPACounterEntity();
em.persist( counter );
em.flush();
}
em.clear();
result = counter.getValue();
} catch (Throwable t) {
System.out.println("StatelessCounterBean:increment - caught unexpected exception: " + t);
t.printStackTrace();
}
return result;
}
}
- public class StatelessCounterBean 행 옆에 있는 빠른 수정사항 아이콘을 마우스 오른쪽 단추로 클릭하고
'LocalCounter' 인터페이스 작성을 선택하십시오.
- 사용자의 LocalCounter.java 클래스가 Java 편집기에서
열립니다. 모든 코드를 이 코드로 바꾼 후 CTRL+S를 눌러 저장하십시오.
// This program may be used, executed, copied, modified and distributed
// without royalty for the purpose of developing, using, marketing, or distributing.
package com.ibm.example.websphere.ejb3sample.counter;
import javax.ejb.Local;
@Localpublic interface LocalCounter {
public int increment();
public int getTheValue();
}
- Java 편집기에서 StatelessCounterBean.java 클래스로 돌아가십시오.
- 원격 카운터 인터페이스를 작성하려면 로컬 카운터 작성 단계를 따르고 RemoteCounter.java의 모든 코드를
이 코드로 바꾼 후 CTRL+S를 눌러 저장하십시오.
// This program may be used, executed, copied, modified and distributed
// without royalty for the purpose of developing, using, marketing, or distributing.
package com.ibm.example.websphere.ejb3sample.counter;
import javax.ejb.Remote;
@Remote
public interface RemoteCounter {
public int increment();
public int getTheValue();
}
- Java 편집기에서 StatelessCounterBean.java 클래스로 돌아가십시오.
- @PersistenceContext 옆에 있는 빠른 수정사항 아이콘을 마우스 오른쪽 단추로 클릭하고
빠른 수정사항을 선택하십시오. 'PersistenceContext'(javax.persistence) 가져오기를 선택하고
CTRL+S를 눌러 저장하십시오.
- @EntityManager 옆에 있는 빠른 수정사항 아이콘을 마우스 오른쪽 단추로 클릭하고
빠른 수정사항을 선택하십시오. 'EntityManager'(javax.persistence) 가져오기를 선택하고
CTRL+S를 눌러 저장하십시오.
- JPACounterEntity 옆에 있는 빠른 수정사항 아이콘을 마우스 오른쪽 단추로 클릭하고
빠른 수정사항을 선택하십시오. 'JPACounterEntity.java' 클래스 작성을
선택하십시오. 새 클래스 마법사 페이지에서 기본값을 승인하고 완료를 클릭하십시오.
이제 연습 1.3, 데이터 지속성을 위한 엔티티 클래스 및 데이터베이스 작성으로 이동할 준비가 되었습니다.