반응형
WebLogic EJBGen을 이용해 CMP를 만들 때 Oracle Sequence 를 사용하는 방법입니다.

Eclipse 3.4.2 + Oracle WebLogic Server Support 1.0.0.2 에서 테스트 했습니다.

스키마는 간단하게...

CREATE TABLE INFO (
   SEQ NUMBER PRIMARY KEY,
   DATA VARCHAR(200) NOT NULL
);

CREATE SEQUENCE INFO_SEQ INCREMENT BY 1;


WebLogic 프로젝트 만드는 법은 여기를 참조하시구요~ -_-+

시퀀스를 그려봤는데 당연히 틀렸겠죠? -_-



문제는 SessionBean에서 EntityBean한테 create() 할 때 시퀀스를 적용시켜야 한다는거죵~

InfoBean.java - Entity Bean

package ejb;

import javax.ejb.EntityBean;
import javax.ejb.CreateException;
import weblogic.ejb.GenericEntityBean;
import weblogic.ejbgen.AutomaticKeyGeneration;
import weblogic.ejbgen.Entity;
import weblogic.ejbgen.JndiName;
import weblogic.ejbgen.FileGeneration;
import weblogic.ejbgen.Constants;
import weblogic.ejbgen.CmpField;
import weblogic.ejbgen.LocalMethod;
import weblogic.ejbgen.AutomaticKeyGeneration.AutomaticKeyGenerationType;
import weblogic.ejbgen.CmpField.ColumnType;
import weblogic.ejbgen.Entity.DatabaseType;

@Entity (
  ejbName = "InfoBean",
  dataSourceName = "ejbTest",
  databaseType = DatabaseType.ORACLE,
  tableName = "info",
  primKeyClass = "java.lang.Integer"
)

@JndiName(local = "ejb.Info")

@FileGeneration(
  localClass = Constants.Bool.TRUE, localClassName = "Info",
  localHome = Constants.Bool.TRUE, localHomeName = "InfoHome",
  remoteClass = Constants.Bool.FALSE, remoteHome = Constants.Bool.FALSE,
  valueClass = Constants.Bool.FALSE
)

// Sequence 설정 부분
@AutomaticKeyGeneration(
  type = AutomaticKeyGenerationType.SEQUENCE,
  name = "info_seq",
  cacheSize = "1"
)

abstract public class InfoBean extends GenericEntityBean implements EntityBean
{
  private static final long serialVersionUID = 1L;

  public java.lang.Integer ejbCreate(java.lang.String data) throws CreateException
  {
    // setSeq(seq)
    setData(data);
    
    return null;
  }

  public void ejbPostCreate(java.lang.String data) { }

  @CmpField(column = "seq", primkeyField = Constants.Bool.TRUE, columnType = ColumnType.LONG_STRING)
  @LocalMethod
  public abstract java.lang.Integer getSeq();
  public abstract void setSeq(java.lang.Integer seq);

  @CmpField(column = "data", columnType = ColumnType.LONG_STRING)
  @LocalMethod
  public abstract java.lang.String getData();
  @LocalMethod
  public abstract void setData(java.lang.String data);
}


이렇게 Entity Bean 을 만들고, mysql 이나 mssql 에서 쓰듯이 시퀀스 부분 빼고 데이터를 넣어주면 자동으로 번호가 생성됩니다.

test.jsp - 클라이언트

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import="javax.naming.*, javax.rmi.*, ejb.*, java.util.Properties" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>

<%
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL, "t3://localhost:7001");

Context ctx = new InitialContext(p);
Object h = ctx.lookup("ejb.InfoManage");
InfoManageHome home = (InfoManageHome)PortableRemoteObject.narrow(h, InfoManageHome.class);
InfoManage im = home.create();

// 테이터1 등록
InfoData info1 = im.insert("테이터1");
out.print(info1.getSeq() + " - " + info1.getData() + "<br>");

//테이터2 등록
InfoData info2 = im.insert("테이터2");
out.print(info2.getSeq() + " - " + info2.getData() + "<br>");
%>

</body>
</html>


InfoManageBean.java - 세션 빈

package ejb;

import javax.ejb.SessionBean;
import javax.naming.Context;
import javax.naming.InitialContext;

import weblogic.ejb.GenericSessionBean;
import weblogic.ejbgen.RemoteMethod;
import weblogic.ejbgen.Session;
import weblogic.ejbgen.JndiName;
import weblogic.ejbgen.FileGeneration;
import weblogic.ejbgen.Constants;

@Session(ejbName = "InfoMenageBean")
@JndiName(remote = "ejb.InfoManage")
@FileGeneration(
  remoteClass = Constants.Bool.TRUE, remoteClassName = "InfoManage",
  remoteHome = Constants.Bool.TRUE, remoteHomeName = "InfoManageHome",
  localClass = Constants.Bool.FALSE,
  localHome = Constants.Bool.FALSE
)

public class InfoManageBean extends GenericSessionBean implements SessionBean
{
  private static final long serialVersionUID = 1L;

  public void ejbCreate() { }

  @RemoteMethod
  public InfoData insert(String data) throws Exception
  {
    Context ctx = new InitialContext();
    InfoHome home = (InfoHome)ctx.lookup("ejb.Info");
    Info info = home.create(data);

    // DTO 클래스로 변환
    return convertData(info);
  }

  // Info -> InfoData
  private InfoData convertData(Info info)
  {
    return new InfoData(info.getSeq(), info.getData());
  }
}


InfoData.java - Data Transfer Object

package ejb;

public class InfoData implements java.io.Serializable

  private Integer seq;
  private String data;
 
  public InfoData(Integer seq, String data) {
    this.seq = seq;
    this.data = data;
  }
 
  public Integer getSeq() {
    return seq;
  }
  public String getData() {
    return data;
  }
  public void setData(String data) {
    this.data = data;
  }
 
  private static final long serialVersionUID = 1L;
}

반응형

'Server > WebLogic' 카테고리의 다른 글

Eclipse + WebLogic 추가 설정 사항들...  (6) 2011.08.23
웹로직 ZIP 배포판 설치 (윈도우)  (1) 2011.07.14
WebLogic 10.3 JDBC 설정(DataSource)  (13) 2009.04.18
Eclipse + WebLogic 10.3  (17) 2009.03.15
Domain 생성 및 테스트  (1) 2009.03.14
Oracle WebLogic Server 10.3 설치  (6) 2009.03.14
//

Eclipse + WebLogic 10.3

Posted at 2009. 3. 15. 07:51 | Posted in Server/WebLogic
반응형

시작전 설정


Eclipse 가 deploy 등등 조작(?)을 하려면 서버 설정을 하나 해줘야 합니다.


- 서버 시작
시작 → 프로그램 → Oracle WebLogic → User Projects → base_domain → Start Admin Server for Weblogic Server Domain


- Administration Console 실행 → 상단에 Preferences 클릭




- 마지막 Automatically Acquire Lock and Activate Changes를 체크해제하고 Save 클릭



- 왼쪽 상단의 Change Center가 수동으로 바뀌었습니다.



- Release Configuration을 클릭하여 Lock & Edit 버튼이 활성화되게 바꿉니다.
이 상태가 되어야 Eclipse가 자동 배포 등이 가능하게 됩니다..




Eclipse에 Runtime Server 추가하기


- Eclipse IDE for Java EE Developers로 시작합니다... File → New → Other... 선택


- Server → Server 선택. Next 클릭





- 처음에는 WebLogic이 없습니다. Download additional server adapters 클릭



- 기다리면 정보를 받아와 목록이 생깁니다. Oracle WebLogic Support 선택. Next 클릭




- 라이선스에 동의. Finish 클릭




- 프로그램을 다운로드 받아 설치한다고 합니다. OK 클릭



- 다운로드 및 설치 중... 설치가 완료되면 자동으로 Eclipse를 재시작합니다.



- JDK 버젼 어쩌고 나오는군요... Yes 클릭



- 다시 File → New → Other... 그리고 Server → Server
서버 목록에 Oracle WebLogic Server v10.3 이 생겼습니다. 선택 후 Next



- WebLogic Server 의 위치를 설정합니다.



- 도메인을 설정합니다.



- 적용시킬 프로젝트를 추가시킵니다. 현재는 프로젝트가 하나도 없군요...



- 아래 Servers 탭에 WebLogic Server 가 추가되었습니다.





간단한 세션 빈 테스트 - Server(WebLogic)
※ 컴퓨터 2대(Tomcat 6.0.18, WegLogic 10.3)로 분산환경에서 테스트 합니다.


File → New → Other... 그리고 General → Faceted Project 선택. Next 클릭




- 프로젝트 이름 설정. Next 클릭



- Facet 를 조합합니다. WebLogic에 맞는 EJB Porject를 생성하기 위해서는 아래와 같이 조합합니다.

오른쪽 Runtimes 탭에서 꼭 Oracle Weblogic Server v10.3을 체크해주세요.
체크하지 않으면 "Failed to retrieve WLS runtime for EJB processing" 에러가 납니다.



- Source Folder를 설정합니다.



- 잘 만들어 졌다네요..(아닌가?)



- Project Explorer를 보게되면 아래와같이 EJB Project가 만들어졌습니다.



- New → Package. 패키지를 하나 만듭니다.



- New → WebLogic Session Bean 선택. 여기서 만드는 파일이 빈(Bean) 클래스 파일이 됩니다.



- 소스 코드를 완성합니다.


기본적으로 세션빈에서 만들어져야 하는 명세는 GenericSessionBean 클래스에 작성되어있고 이걸 상속 받는군요...
public class HelloWorld extends GenericSessionBean implements SessionBean
{



중요한 부분은 @ 가 있는 부분입니다.

@JndiName은 클라이언트에서 lookup하는 JNDI 이름을 설정합니다.
@FileGenerration은 remoteClass, remoteHome, localClass, localHome 클래스 파일을 자동 생성할지 설정합니다.

@Session(ejbName = "HelloWorld")
@JndiName(remote = "ejb.HelloWorldRemoteHome")
@FileGeneration(remoteClass = Constants.Bool.TRUE, remoteHome = Constants.Bool.TRUE,
                          localClass = Constants.Bool.FALSE, localHome = Constants.Bool.FALSE)


remoteClass를 TRUE로 설정시, 사용자가 추가하는 메소드에는 꼭 @RemoteMethod를 적어줘야 원격(Remote) 클래스에 메소드가 추가됩니다.
@RemoteMethod
public String helloWorld() {
     return "Hello World!!";
}


빈(Bean) 클래스 파일만 작성하면 원격(Remote) 클래스, 홈(Home) 클래스, 기타파일(ejb-jar.xml, weblogic-ejb-jar.xml) 등을 알아서 만들어줍니다.

ex)
빈(Bean) 클래스 : HelloWorld.java
원격(Remote) 클래스 : HelloWorldRemote.java ← 자동생성
홈(Home) 클래스 : HelloWorldRemoteHome.java ← 자동생성
배치 디스크립터 파일 : ejb-jar.xml , weblogic-ejb-jar.xml ← 자동생성


- 아래 Servers 탭에서 WebLogic을 선택후 마우스 우클릭 → Add and Remove Projects...
현재 만든 프로젝트를 Configured projects 목록에 추가시킵니다.




- 서버 아래에 HelloWorld 프로젝트가 추가되었습니다.



- Run → Run 선택. Run on Server 선택 후 OK



- 서버 확인 후 Finish



- 서버가 실행되면서 자동으로 배치(재배치) 합니다.


※ 프로젝트의 State가 둘다 "Republish", "Synchronized"가 아니면 배치가 안된거니 확인하세요.(명세에 안맞거나 기탕 등등 에러)

※ 여기서 이런 오류가 나온다면, 위에 "시작전설정" 이 제대로 안되서 나오는 오류 입니다.



- Administration Console 실행 후 Deployments에서 배치가 되어있으면 성공!
※ 이클립스 프로젝트가 삭제되거나 서버의 프로젝트 목록에 없으면 배치가 안되니 다 완성후에는 수동으로 배치 시켜줘야겠죠?;;





클라이언트 설정하기


- 서버에서 작성된 EJB jar 파일이 클라이언트에서 필요합니다.
프로젝트 최상위 루트에서 마우스 우클릭 → Export → EJB JAR File 선택 후 적당한 위치에 저장합니다.
이 파일(HelloWorld.jar)은 클라이언트 프로젝트의 WebContent\WEB-INF\lib 에 저장합니다.




- 클라이언트가 서버와 다른 컴퓨터. 다른 JVM, 다른 컨테이너 등등 다를 경우 서버(WebLogic)의 라이브러리가 필요합니다

wlfullclient.jar 파일은 [톰켓설치폴더]\lib 에 저장합니다.

※ 링크가 바뀌는 바람이 링크 수정 하면서 여기에다 wlfullclient.jar 파일 생성법 올립니다. 이래서 링크는 싫어... ㅠ_ㅠ
Creating a wlfullclient.jar File for a Client Application
Use the following steps to create a wlfullclient.jar file for a client application:

1.Change directories to the server/lib directory.
cd WL_HOME/server/lib

2.Use the following command to create wlfullclient.jar in the server/lib directory:

java -jar ../../../modules/com.bea.core.jarbuilder_X.X.X.X.jar

where X.X.X.X is the version number of the jarbuilder module in the WL_HOME/server/lib directory. For example:

java -jar ../../../modules/com.bea.core.jarbuilder_1.0.1.0.jar

3.You can now copy and bundle the wlfullclient.jar with client applications.

4.Add the wlfullclient.jar to the client application’s classpath.




간단한 세션 빈 테스트 - Client(Tomcat)
※ 컴퓨터 2대(Tomcat 6.0.18, WegLogic 10.3)로 분산환경에서 테스트 합니다.


- File → New → Dynamic Web Project 선택. 프로젝트 이름, Target Runtime 설정





- 소스 코드를 완성합니다.


소스의 내용은 JNDI로 룩업해서 Hello World!!! 찍는거...

wlfullclient.jar과 HelloWorld.jar 파일이 아래와 같이 라이브러이에 등록되어있어야 합니다.
wlfullclient.jar : [톰켓설치폴더]\lib
HelloWorld.jar : [프로젝트]\WebContent\WEB-INF\lib



- Run → Run. Server 확인 후 Finish



- 잘 실행되었습니다!! ㅠ_ㅠv

반응형
//

Domain 생성 및 테스트

Posted at 2009. 3. 14. 21:04 | Posted in Server/WebLogic
반응형

도메인이란? 관리적인 개념으로서 단일 Administration Server로 관리하는 Server, Machine 및 Cluster의 그룹(인터넷 도메인 x)


- 시작 → 프로그램 → Oracle WebLogic → WebLogic Server 10gR3 → Tools → Configuration Wizard


- Create a new WebLogic domain 선택




- Generate a domain configured automatically to support to following products 선택



- User name과 User password 설정



- 서버 모드(개발, 운용) 및 JDK 설정



- 다른 옵션들 추가 설정



- 도메인 이름, 디렉토리 설정



- 도메인 생성 완료





※ html, jsp, Servlet 테스트



이 파일에는 간단한 index.html sum.jsp HelloServlet.java 파일이 들어있습니다.

Test.war 파일을 배치하여 테스트 해봅시다.


- Test.war 파일을 적당한 위치로 옮깁니다.



- 서버를 실행합니다.
시작 → 프로그램 → Oracle WebLogic → User Projects → base_domain → Start Admin Server for Weblogic Server Domain



Administration Console을 실행합니다.



- 왼쪽의 Domain Structure 트리에서 Deployments를 선택합니다.



- Install 클릭



- 배치할 파일이나 디렉토리를 설정합니다.
여기서 war, jar 파일이나 디렉토리가 선택이 되지 않으면 잘못 작성되었기 때문입니다.



- Next 클릭



- Finish 클릭.(더 자세한 설정을 하려면 Next로 더 설정할 수 있습니다)



- war 파일이 정상적으로 배치(deploy) 되었습니다.



- html 테스트



- jsp 테스트



- Servlet 테스트

반응형
//

Oracle WebLogic Server 10.3 설치

Posted at 2009. 3. 14. 16:05 | Posted in Server/WebLogic
반응형

영어 잘 하시는분은.. http://edocs.bea.com/wls/docs103/getstart/overview.html 보시길... ㅠ_ㅠ

- 설치 환경



java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)



설치파일을 다운로드 받습니다.



- 다운로드 받은 설치파일을 실행합시다. (Net Installer - net_server103_win32.exe)



- Welcome~ Next...



- BEA Home Directory 설정후 Next



- Net Installer 에서만 나오는 설정입니다. 설치하면서 받을 파일 저장 위치를 지정합니다.



- 기본설치, 사용자설치 선택. 아무것도 모르겠다 하면 Complete 하시면 되겠죠... 저는 Custom로 합니다.



- 설치할 프로그램을 설정합니다.
Workshop은 Eclipse를 개량하여 최적화시킨 것입니다. 저는 Eclise를 따로 쓰기 때문에 패스.



- 사용할 JDK 를 선택합니다.
WebLogic 기본으로 1.6.0_05를 설치하는데 저는 1.6.0_12를 사용하기 위해서 따로 JDK를 추가 했습니다.



- JDK 1.6.0_12 쓸거냐고 물어보는군요... 가볍게 Yes



- 설치파일을 다운로드 받습니다. Net Installer 에서만 볼 수 있습니다.



- 다운로드 받은 설치파일을 검사합니다. Net Installer 에서만 볼 수 있습니다.



- WebLogic이 설치될 디렉토리를 설정합니다.



- Node Manager Service를 설치할지 설정.



- 시작메뉴를 전체 다 보여줄지 선택.. 윈도우 관련된 것이죠.. -_-/



- 설치될 파일들을 마지막으로 확인합니다.



- 설치 시작



- 설치가 완료되었습니다.



- 간단하게 설치가 잘 되었는지 확인하기 위해서....
시작 → 프로그램 → Oracle WebLogic → WebLogic Server 10gR3 → Examples → Start Examples Server 선택



http://localhost:7001/ 잘 되면 설치 완료!



- 서버 끄기 : 시작 → 프로그램 → Oracle WebLogic → WebLogic Server 10gR3 → Examples → Stop Examples Server 선택
※ 서버 끌때 그냥 cmd 창 닫아버리지 말고, 꼭 stop하는 명령(?)을 이용합니다.


- 설치하다가 이런거 나오면 윈도우 보안 관련된 것이니 '차단 해체' 선택해주세요.

반응형
//