Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


InvokeEJB Custom Tag Library implementation
 
JSP 개발시 EBJ tier의 stateless session bean의 business method 호출에대한 code logic을 encapsulation하는 Custom Tag Library 소개를 하며 Web tier와 EJB tier간 개발자 role을 명확히 분리할수 있는 장점 제공하는 tag lib를 소개한다. ( 2003/03/10 ) 317
Written by specular - 전홍성
3 of 3
 



  앞에서 InvokeEJBTag에 대한 구현코드를 살펴 보았고, 다음은 Tag Library Descriptor를 보겠다. TLD를 정의할때는 개발한 Custom Tag의 attribute들이 반드시 필요한가를 생각해 보면된다. InvokeEJBTag의 url, context는 개발된 소스의 defualt 값을 이용해도 되기때문에 반드시 필요한 attribute는 아니다. 그리고, id, type은 return object에 대한 사항 임으로 이것도 반드시 필요한 것은 아니다. 결국, TLD는 다음과 같다.

# javapattern-taglib_1_0.tld file
      
<?xml version="1.0" encoding="euc-kr" ?>
<!DOCTYPE taglib
 PUBLIC "-//Sun Microsystemes, Inc.//DTD JSP Tag Library 1.1//EN"
 "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

<taglib>
	<tlibversion>1.0</tlibversion>
	<jspversion>1.1</jspversion>
	<shortname>javapattern</shortname>
	<uri></uri>
	<info>Jeon HongSeong tag library</info>


	<tag> 
		<name>invokeEjb</name>
		<tagclass>com.javapattern.servlet.jsp.InvokeEJBTag</tagclass>
		<teiclass>com.javapattern.servlet.jsp.InvokeEJBTEI</teiclass>
		<bodycontent>JSP</bodycontent>
		<info>invokeEjb Tag Handler</info>
		<attribute>
			<name>id</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>type</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>jndiName</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>context</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>context</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>url</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>method</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>

	<tag> 
		<name>param</name>
		<tagclass>com.javapattern.servlet.jsp.InvokeParamTag</tagclass>
		<teiclass>com.javapattern.servlet.jsp.InvokeParamTEI</teiclass>
		<bodycontent>empty</bodycontent>
		<info>invokeEjb ParamTag Handler</info>
		<attribute>
			<name>name</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>value</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>
</taglib>


  다음은 InvokeEJBTag에 대한 간단한 JSP 예제 소스입니다.

            
<%@ taglib uri="/WEB-INF/tld/javapattern-taglib_1_0.tld" prefix="javapattern" %>

<% String name="HongSeong"; %>

<javapattern:invokeEjb	jndiName="MyEcho" 
			url="t3://127.0.0.1:7001/" 
			method="sayEcho" 
			id="result" 
			type="java.lang.String">
	<javapattern:param name="java.lang.String" value="<%= name %>"/>
</javapattern:invokeEjb>

<b>
<%= result %>
</b>

  지금까지 EJB Statless Session Bean의 Business method의 호출에 대한 코드 로직을 Encapsulation함으로써, EJB 호출방법의 일관성을 제공하고, EJB system과의 depedency를 줄임으로써, 개발자의 role을 명확이 나눌수 있다는 장점을 제공하는 Custom Tag Library에 대해 살펴 봤다. 이 InvokeEJBTag를 좀 개선 한다면, EJBObject에 대한 Handle 객체를 Caching하는 기능을 추가할수 있겠다. EJB Business method를 매번 호출할때마다 JNDI Naming service에 access 하는 작업을 줄임으로써, performance를 개선할수 있겠죠.



2001.08.03 written by Jeon HongSeong

 
 
1 2 3
References
 
http://java.sun.com/taglib
Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD