Speed Up Your JavaScript

Posted at 2009. 6. 12. 16:48 | Posted in Etc/Scrap
반응형
반응형

'Etc > Scrap' 카테고리의 다른 글

RedUTF8 (utf-8 변환기)  (3) 2009.06.06
What can change the nature of a man?  (0) 2009.05.05
왜 공부해야 하는가?  (0) 2009.05.04
//

RedUTF8 (utf-8 변환기)

Posted at 2009. 6. 6. 10:44 | Posted in Etc/Scrap
반응형
프로젝트 하면서 euc_kr 을 모두 utf-8 로 변경할 일이 있어서 찾아보니...!!

일괄적으로 파일을 utf-8(또는 다시 ansi로)로 변환해주는 유틸리티입니다.

ps) 100% 완벽하게는 안되고 99.9% 완벽하게 되는듯 합니다. 한 프로젝트 다 돌렸는데 js 파일 2개만 앞뒤로 한두글자 깨지네요...




반응형

'Etc > Scrap' 카테고리의 다른 글

Speed Up Your JavaScript  (0) 2009.06.12
What can change the nature of a man?  (0) 2009.05.05
왜 공부해야 하는가?  (0) 2009.05.04
//

What can change the nature of a man?

Posted at 2009. 5. 5. 23:43 | Posted in Etc/Scrap
반응형

무엇이 인간의 본성을 바꾸는가?



한 노인이 어두운 길에 홀로 앉아 있었어.

그는 어느방향으로 가야하는지 몰랐고,
그는 행선지와 자신이 누구인가를 망각하고 있었어.
그는 피곤한 다리를 쉬게 하기 위하여 잠시 앉았지,

그리고 올려다보니 갑자기 눈앞에 어떤 노파가 있는거야.
그녀는 이빨도 없이 싱긋 웃었지, 그리고 깔깔거리면서 말했어

"이제 당신의 세번째 소원을 말할 차례요 무엇을 원하시오?"

"세번째 소원?"

남자는 당황했어.

"첫번째와 두번째 소원도 말한적이 없는데 어떻게 세번째소원을 말하라는 거요?"

"당신의 두 소원은 이미 성취되었소"
 
노파가 말했지.

"당신의 두번째 소원은 모든걸 첫번째 소원을 말하기전 상태로 되돌려 달라는 것이었소. 그래서 당신은 아무것도 기억하지 못하는거요. 왜냐하면 모든것이 정확히 당신이 어떤 소원도 말하기전 상태로 되돌아갔기 때문이오"

그녀는 불쌍한 노인을 보며 깔깔 웃었지

"그래서 하나의 소원만 남은거요..."

노파의 이야기를 들은 노인은 말했어

"좋소....   나는.... 당신의 이야기를 믿지 않소. 하지만.... 소원을 말해서 손해볼건 없으니까....."

노인은 한참을 생각하는듯 했어.

그리고.... 노인은 노파에게 자신의 소원을 말했어

"......나는....... 내가 누군지 알고싶소"

"......재미있군"

노파는 소원을 들어주고 영원히 사라지며 말했어

"그게 바로 당신의 첫번째 소원이었지...."

- Planescape Torment 中

반응형

'Etc > Scrap' 카테고리의 다른 글

Speed Up Your JavaScript  (0) 2009.06.12
RedUTF8 (utf-8 변환기)  (3) 2009.06.06
왜 공부해야 하는가?  (0) 2009.05.04
//

Struts 파일 업로드

Posted at 2009. 5. 5. 22:58 | Posted in Framework/Struts
반응형

Struts 에서 파일 업로드 하는 법입니다.

왜 올리냐? 앞으로의 Ctrl+C , Ctrl+V 를 위해서 -_-v

jdk 1.6.0_13
tomcat 6.0.18
struts 1.3.10

프로젝트는 struts-blank-1.3.10.war 파일 Import 해서 생성 했고, jsp 에는 struts taglib를 사용했습니다.



form.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<!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>file upload</title>
</head>
<body>

<html:form action="/result" method="post" enctype="multipart/form-data">

subject : <html:text property="subject" /> <br />
file : <html:file property="att" /> <p />
<html:submit value="submit" />

</html:form>

</body>
</html>


struts-config.xml
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

 <form-beans>
  <form-bean name="formFileUpload" type="antop.FormFileUpload" />
 </form-beans>

 <global-exceptions> </global-exceptions>

 <global-forwards> </global-forwards>

 <action-mappings>
  <action path="/result" type="antop.ActionFileUpload"
   name="formFileUpload" input="/form.jsp" scope="request">
   <forward name="result" path="/result.jsp"/>
  </action>

 </action-mappings>

 <message-resources parameter="MessageResources" />

 <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames"
   value="/org/apache/struts/validator/validator-rules.xml,
               /WEB-INF/validation.xml" />
 </plug-in>

</struts-config>


FormFileUpload.java
package antop;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

public class FormFileUpload extends ActionForm
{
  private static final long serialVersionUID = 1;

  private String subject;
  private FormFile att;

  public String getSubject() {
    return subject;
  }
  public void setSubject(String subject) {
    this.subject = subject;
  }
  public FormFile getAtt() {
    return att;
  }
  public void setAtt(FormFile att) {
    this.att = att;
  }
}


ActionFileUpload.java
package antop;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

public class ActionFileUpload extends Action
{
  @Override
  public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
  
    FormFileUpload f = (FormFileUpload)form;
  
    String subject = f.getSubject();
    FormFile att = f.getAtt();

    if(att != null)
    {
      String realName = "";
      String fileName = att.getFileName();
      String fileContextType = att.getContentType();
      int fileSize = att.getFileSize();
   
      String path = "/upload";  // 업로드할 경로
      String realPath = "";
   
      /*
       * 파일 업로드 시작
      */

      InputStream in = null;
      OutputStream os = null;
   
      try
      {
        // 파일 확장자 구하기
        String ext = att.getFileName();
   
        int last = 0;
        boolean findExt = false;
    
        while((last = ext.indexOf(".")) != -1) {
          findExt = true;
          ext = ext.substring(last+1);
        }
    
        // 파일 이름 중복 방지
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String rndName = sdf.format(new java.util.Date()) + System.currentTimeMillis();
    
        // 실제 저장될 파일 이름
        realName = findExt ? rndName + "." + ext : rndName;
    
        // 실제 저장될 디렉토리 구하기
        ServletContext application = getServlet().getServletContext();
        realPath= application.getRealPath(path);
    
        // 실제로 저장될 파일 풀 경로
        File file = new File(realPath + "/" + realName); 
    
        // 저장하기(복사)
        os = new BufferedOutputStream(new FileOutputStream(file));
        in = att.getInputStream();
    
        int i;
        byte[] buffer = new byte[1024*4];
        while((i=in.read(buffer, 0, 1024*4)) != -1) {
          os.write(buffer, 0, i);
        }
   
      }
      catch(Exception e) {
        e.printStackTrace();
      }
      finally {
        try { if(os != null) os.close(); } catch (IOException ignore) { }
        try { if(in != null) in.close(); } catch (IOException ignore) { }
      }
      /*
       * 파일 업로드 끝
      */
   
        request.setAttribute("realPath", realPath);   // 실제 저장되는 풀경로
        request.setAttribute("realName", realName);   // 실제 저장된 파일 이름
        request.setAttribute("fileName", fileName);   // 업로드 했을때의 파일 이름
        request.setAttribute("fileSize", fileSize);   // 파일 사이즈
        request.setAttribute("fileType", fileContextType); // 파일 종류
      }
  
      request.setAttribute("subject", subject);   // 제목
  
      return mapping.findForward("result");
  }
}


result.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>

<!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>file upload result</title>
</head>
<body>

subject : <bean:write name="subject"/> <br />
realPath : <bean:write name="realPath"/> <br />
realName : <bean:write name="realName"/> <br />
fileName : <bean:write name="fileName"/> <br />
fileSize : <bean:write name="fileSize"/> <br />
fileType : <bean:write name="fileType"/>

</body>
</html>
반응형

'Framework > Struts' 카테고리의 다른 글

*.jsp 접근 막기  (0) 2009.09.03
스트러츠(Struts) 기본 세팅  (6) 2009.06.22
//

왜 공부해야 하는가?

Posted at 2009. 5. 4. 12:07 | Posted in Etc/Scrap
반응형
20대 중후반 되서야 피눈물 흘리며 알게 되는 것을... 그냥 알려주네요 ㅎㅎ

 

 
반응형

'Etc > Scrap' 카테고리의 다른 글

Speed Up Your JavaScript  (0) 2009.06.12
RedUTF8 (utf-8 변환기)  (3) 2009.06.06
What can change the nature of a man?  (0) 2009.05.05
//
반응형
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
//

WebLogic 10.3 JDBC 설정(DataSource)

Posted at 2009. 4. 18. 05:48 | Posted in Server/WebLogic
반응형

- console 접속


- 왼쪽 트리메뉴에서 도메인이름 → Serviews → JDBC → Data Sources 선택





- 현재 등록되어있는 DataSource 목록이 나옵니다. New 클릭



- 기본 속성 입력
Name : 그냥 표시되는 이름
JDI Name : 중요!! DataSource 를 찾을 때 쓰는 이름입니다.
Database Type : 디비 종류
Database Driver : 드라이버





- 트랜잭션 설정 : 잘 모르겠습니다 -_- Next





- SID, 아이디, 비번, 주소 등등 입력합니다. Next





- 접속 테스트 합니다. Test Configuration 클릭





- Connection test succeeded. 가 나와야 성공. Next





- 타겟 서버를 선택합니다. Finish





- 추가된 것 확인




- 등록 완료



테스트

- 간단하게 테스트하기 위해 Server Runtime 을 Orcle WebLogic Server v10.3으로 선택





- 간단한 테스트 페이지 작성

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import="javax.naming.*, javax.sql.*, java.sql.*" %>
<%@ page import="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>WebLogic 10.3 JDBC 테스트</title>
</head>
<body>

<%
Context ctx = null;
DataSource ds = null;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

try
{
   ctx = new InitialContext();
   ds = (DataSource)ctx.lookup("AntopTest");

   conn = ds.getConnection();
   stmt = conn.createStatement();

   rs = stmt.executeQuery("select * from tab");

   while(rs.next()) {
      out.print(rs.getString(1) + " - " + rs.getString(2) + "<br>");
   }
}
catch(Exception e)
{
   out.print("error : " + e.getMessage());
}
finally
{
   try { if(rs != null) rs.close(); } catch (SQLException ignore) { }
   try { if(stmt != null) stmt.close(); } catch (SQLException ignore) { }
   try { if(conn != null) conn.close(); } catch (SQLException ignore) { }

   ds = null;
   try { if(ctx != null) ctx.close(); } catch (NamingException ignore) { }
}
%>

</body>
</html>



- 실행 결과





반응형
//

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

반응형
//