오랜 삽질이 있었습니다. 앞에 약간 변경된 부분이 있으니 참고하시길...

1. 먼저, UserInfo 클래스들의 소스 화면 보면서 얘기를 드리겠습니다.

UserInfoHome.java


- 이 파일에서는 create가 선언되어 있습니다. UserInfoBean.java 파일안에서 ejbCreate로 구현이 되어 있구요. XDE로 생성한 코드는 뒤에 인자가 들어가지 않습니다! 우리가 만들 Entity Bean은 id와 name을 가지므로 create함수의 인자를 그림처럼 선언해줍니다.

UserInfoBean.java


- 위에서 create함수에서 선언한 부분을 이 파일의 ejbCreate함수에도 동일하게 선언을 해주고, 구현합니다. (set 함수를 이용하면 되겠죠.)
- 또 하나 주의할 점이 있습니다. 바로 ejbPostCreate함수인데요. 원래 XDE에서 생성해주지만, 그림에서 블록으로 지정된 부분처럼 하나 더 만들어줘야 합니다. ejbCreate함수의 인자와 동일하게요. (상당히 삽질했습니다. 이 부분이 없으면 나중에 ejbCreate 함수를 찾을 수 없다고 투덜됩니다..)

- 이정도이면 UserInfo에 대한 정리는 끝났습니다.

2. 두번째, UserManage 클래스들의 소스 화면입니다.

UserManageBean.java


- 먼저 UserManageBean.java 코드의 앞부분에 블록 지정된 부분처럼 import를 합니다. Entity 패키지에 있는 UserInfo를 여기서 접근해야하기 때문입니다.


- 우리가 XDE에서 만든 register함수를 구현할 차례입니다. 위에서 import한 javax.naming.*은 UserInfo의 Home Interface를 찾기위해서입니다. (Context 클래스를 사용하죠^^)
- 블럭부분으로 지정된 부분을 잘 기억해주세요. 특히 ejb/UserInfoEJB를 기억해둬야합니다. JNDI및 EJB Ref 설정시 필요합니다.
- eclipse는 저장시 자동으로 컴파일이 됩니다. 따라서 변경하고 저장을 합니다.

3. Session Bean에 접근할 JSP 파일을 하나 만들어 봅시다.

- 간단히 프로젝트 명에서 우클릭하여 JSP를 선택합니다.

- 파일명을 넣어줍니다. (jsp 확장자도 넣어줘야합니다.)

client.jsp


- 여기서 할 얘기가 조금 많습니다. 일단 import 부분부터 언급해야겠네요.
page import="javax.naming.*" ==> Class를 찾기 위해서
page import="javax.rmi.*" ==> Remote Interface에 접근하기 위해
page import="Session.*" ==> UserManage가 포함된 패키지


- 다음은 body 이하의 부분입니다. Local Interface에 접근하였던register함수 구현부와는 달리, JSP에서는 Remote Interface에 접근해야하므로 PortableRemoteObject를 사용해야합니다. 접근 방식이 다르므로 눈여겨 보아야합니다. (48시간 삽질 부분입니다!) 역시나, lookup 부분을 기억해둬야합니다.

4. 자 전체적인 소스의 흐름에 대해 설명합니다.
(1) client.jsp에서 Session Bean인 UserManageHome(Remote Interface)을 찾습니다. (lookup 부분 과 PortableRemoteObject)
(2) UserManageHome에서 UserManage를 받아옵니다. (home.create() 부분)
(3) UserManage에서 register를 호출합니다.
(4) register 함수에서는 EntityBean인 UserInfoHome(Local Interface)를 찾습니다. (lookup 부분)
(5) UserInfoHome에서 jsp에서 받아온 field를 인자로 넣어, UserInfo를 생성합니다.

- 인터넷이나 책에보면 잘 나와있으므로, 여기서는 개념보다는 방법을 설명하도록 하겠습니다.

자~ 이제 소스 프로그래밍 파트는 다 끝났습니다. 이제 디플로이먼트가 남았네요. 디플로이먼트 파트는 C양이 받아서 하겠습니다^^
Posted by xHuro
,