JBoss Seam의 특징


이미지 출처: http://static.raibledesigns.com/repository/images/seam_logo_blue.png

하는 일

  • EJB3와 JSF를 연결
    • JEE5의 주요 표준
      • EJB 3.0 - JSR 220
      • JavaServer Faces - JSR 127
  • EJB3에 Sean Annotation으로 JSF에서 사용
  • POJO를 Seam 컴포넌트로
  • RESTful처리
  • JSF에서 사용할 수 있는 EL(Expression Language) 제공

POJO 기반

  • Plain Old Java Object


    이미지 출처: http://www.rippleinteractive.com/blog/images/typed_a_.png

Web Beans(JSR-299) 표준화

주요 특징

  • ORM을 이해하는 웹 Framework
    • Cache
    • Database validator
  • Stateful 웹 어플리케이션
    • 설계부터
    • HTTP 세션을 직접 Handling안해도 되도록
  • Web 2.0지원
    • AJAX 기술을 제공
    • JSF의 AJAX 컴포넌트 포함
  • Dependency Bijection을 이용한 POJO 서비스
    • POJO를 Seam 서비스로
    • 인터페이스 / Abstract 클래스가 필요없음
    • 주석을 사용하면 Dependency 관리해줌
  • Configuration by Exception
    • Framework의 설계 원칙
    • Annotation 코딩량을 최소화
  • XML 남용을 피함
    • 꼭 필요한 부분에만 사용
  • 테스트를 위한 설계
    • POJO 기반이라 테스팅 Framework에서 사용하기 편리
    • new로 생성하면 됨
  • 개발툴 지원
    • Eclipse 개발툴 지원
      • JBoss Tool
      • JBoss Developer Studio
  • No Vendor Lock-in
    • 어떤 WAS에서도 동작 가능

Seam의 부가 컴포넌트는?

  • AJAX 컴포넌트
  • Hibernate Search를 이용한 전문 검색(Full Text Search)
  • Google Web Tookit
  • Web Services
  • JBoss Rules(Drools)
  • JBoss jBPM
  • iText PDF 생성 컴포넌트
만득이네
|

 

JBoss Seam

JBoss Seam의 주요 특징


이미지 출처: http://www.seamframework.org/themes/sfwkorg/img/seam_icon_large.png

1. 프로그램 다운로드

  • JBoss AS 다운로드
    • http://www.jboss.org/


      이미지 출처: http://www.jboss.org/theme/images/spotlights/spotlight_as5_50k.jpg

2. 설치

  • JBoss Seam 2.2.1 GA
    • jboss-seam-2.1.1.GA.zip 파일 압축 풀기
  • JBoss Application Server 4.2.3 GA
    • jboss-4.2.3.GA.zip 파일 압축 풀기
  • JBoss Developer Studio 2.0 CR2
    • java -jar jbdevstudio-xxx-2.0.0.CR2-xxxxxx.jar
    • 설치 화면에서 디렉토리 지정하여 설치

3. 예제 컴파일

4. Seam Gen

  • 데이터베이스 테이블을 CRUD Seam 어플리케이션으로 생성

5. 예제 실행

seamframework 사용 사이트


이미지 출처: http://www.seamframework.org/themes/sfwkorg/img/runningon_seamlogo_beige.gif

  • ... best Lego Builder in the world.


    이미지 출처: http://nuncscio.com/wp-content/uploads/2008/01/lego_logo-710596.png

참고자료

  • Seam Books
    • Practical JBoss Seam Projects, ...


      이미지 출처: http://i20.tinypic.com/314c6q0.jpg

    • Seam In Action: Covers Seam 2.0


      이미지 출처: http://www.a1bazaar.in/Books/Management/Seam-In-Action_-Covers-Seam-20/admin/productimages/19643/9788177228861_medium.jpg

    • Seam Framework: Experience the Evolution of Java EE (2nd Edition)


      이미지 출처: http://img.tesco.com/pi/Books/L/93/9780137129393.jpg

    • Beginning Jsf 2 Apis and Jboss Seam


      이미지 출처: http://ec2.images-amazon.com/images/I/51q-qazhagL._SL500_AA240_.jpg

    • Practical JBoss Seam Projects, ...


      이미지 출처: http://i20.tinypic.com/314c6q0.jpg

    • Beginning JBoss Seam: From Novice to ...


      이미지 출처: http://202.125.44.112/~linbaioz/img/2007/06/1590597923.jpg

    • JBoss in Action: Configuring the ...


      이미지 출처: http://pixhost.ws/avaxhome/de/d5/000ad5de_medium.jpeg

    • JBoss(R) Seam: Simplicity and Power ...


      이미지 출처: http://vig-fp.pearsoned.co.uk/bigcovers/0131347969.jpg

만득이네
|
하나의 머신에서 여러 개의 JBoss 인스턴스를 구성하려면 Service Binding Manager를 사용하여 별도로 포트가 설정된 XML파일을 이용하여 설정할 수 있다.

첨부한 port-bindings.xml 설정파일을 $JBOSS_HOME/conf/port-bindings.xml 디렉토리에 복사하여 놓고,
$SERVER_HOME/conf/jboss-service.xml 파일의 설정 중  ServiceBindingManager  부분에 아래와 같이 설정하면 된다.  기본적으로 아래 설정은 주석으로 처리되어 있으니, 주석을 제거하고 사용하여야 한다.

첨부한 port-bindings.xml 파일에는 ports-01 부터 ports-09 까지 9개의 포트가 구성되어 있습니다.

<mbean code="org.jboss.services.binding.ServiceBindingManager"

     name="jboss.system:service=ServiceBindingManager">

     <attribute name="ServerName">ports-01</attribute>

     <attribute name="StoreURL">${jboss.home.url}/conf/port-bindings.xml</attribute>

     <attribute name="StoreFactoryClassName">

       org.jboss.services.binding.XMLServicesStoreFactory

     </attribute>

   </mbean>

ports-01부터 ports-09까지 각각의 포트가 리슨하는 주요 포트는 아래 표를 참고하십시오.
 

 

AJP Port

HTTP Port

ports-01

8109

8180

ports-02

8209

8280

ports-03

8309

8380

ports-04

8409

8480

ports-05

8509

8580

ports-06

8609

8680

ports-07

8709

8780

ports-08

8809

8880

ports-09

8909

8980

 

|

아래의 코드를 복사하셔서 web application context에 vm.jsp로 저장하신 후 확인하시면 됩니다.

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="java.net.InetAddress" %>
<%@ page import="java.text.*" %>
<%@ page import="java.util.*" %>

<%
  if (request.getParameter("gc") != null) {
    System.gc();
    System.runFinalization();
  }
 Properties p = System.getProperties();
%>

<HTML>
<HEAD>
<META content="text/html; charset=euc-kr" http-equiv=Content-Type>
<!--META http-equiv="Refresh" content="10;url=<%= request.getRequestURI() %>"-->
<link href="style.css" rel=stylesheet type="text/css">
</HEAD>

<body leftmargin=15 topmargin=10>
<center><p>

<table width="600" cellpadding="7" cellspacing="0" border="1" bordercolordark="WHITE" bordercolorlight="BLACK">
<tr><td>
■ HOST : <%= InetAddress.getLocalHost().getHostName() %>
(<%= InetAddress.getLocalHost().getHostAddress() %>)&nbsp;&nbsp;
<% SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd 'at' HH:mm:ss z", Locale.CHINA); %>
■ Current Time : <%= formatter.format(new Date()) %>
</td></tr>

<tr><td align=center>

<%
   Runtime rt = Runtime.getRuntime();
   long free = rt.freeMemory();
   long total = rt.totalMemory();
   long usedRatio = (total - free) * 100 / total;
   long unusedRatio = free * 100 / total;
%>

<table width=100% bgcolor="lightgrey" border=1 cellpadding=6 cellspacing=0>
<tr>
<td align="center" colspan="2">Total Java Virual Machine Memory (<b><%= total/1024 %> KB</b>)</td>
</tr>
<tr bgcolor=#E3E3E3>
<td align="center">Used Memory (<b><%= (total - free)/1024 %> KB</b>)</td>
<td align="center">Available Memory (<b><%= free/1024 %> KB</b>)</td>
</tr>
<tr bgcolor=#E8EEEC>
<td><hr color="#CC3366" align=left size=10 width="<%= usedRatio %>%" noshade>
(<%= usedRatio %> %)</td>
<td><hr color="#0066FF" align=left size=10 width="<%= unusedRatio %>%" noshade>
(<%= unusedRatio %> %)</td>
</tr>
</table>

<p>
<a href="<%= request.getRequestURI() %>?gc=">
<img src="trash.gif" valign=middle border=0>&nbsp;Execution GC</a>
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
<a href="<%= request.getRequestURI() %>">
<img src="refresh.gif" valign=middle border=0>&nbsp;Reload</a>

</td></tr>
</table>

</center>
</BODY>
</HTML>

|
JBoss ESB에서 작성된 .esb 서비스들은 jUDDI를 이용하여 Registry에 등록되게 됩니다.
ESB 서버상의 UDDI Repository의 내용을 보려면 UDDI Browser라는 Swing Application을 사용하면 됩니다.

http://www.uddibrowser.org/
에서 다운로드 받아 압축을 풀고 실행하면 됩니다.

Windows환경에선 ub.bat 파일을 실행하면 되고, Linux환경에서는 ant를 실행하면 됩니다(build.xml파일이 제공된다).

JBoss ESB 서버에 접속하면 아래와 같은 에러가 발생합니다.
     [java] Caught exception: null
     [java] java.lang.NullPointerException
     [java]     at org.uddibrowser.uddi.UDDIWrapper.findBusiness(UDDIWrapper.java:488)
     [java]     at org.uddibrowser.RegistryActionController.processRead(RegistryActionController.java:500)
     [java]     at org.uddibrowser.RegistryActionController.asyncWork(RegistryActionController.java:471)
     [java]     at org.uddibrowser.RegistryActionController.access$000(RegistryActionController.java:76)
     [java]     at org.uddibrowser.RegistryActionController$1.construct(RegistryActionController.java:355)
     [java]     at org.uddibrowser.ui.SwingWorker$2.run(SwingWorker.java:137)
     [java]     at java.lang.Thread.run(Thread.java:595)

문제는 UDDI Browser에서 사용하는 UDDI4J의 버전이 서버와 맞지 않아 발생하는 것이며,
http://uddi4j.sourceforge.net/
위의 UDDI4J 프로젝트 사이트에서 최신 버전을 다운로드하여 ub-0.2-bin/lib/uddi4j.jar 파일을 업데이트하면 UDDI Browser를 이용하여 JBoss ESB의 서비스를 검색할 수 있습니다.



|

놀새~'s Blog is powered by Daum & tistory