내용 목차
본 장에서는 Java 클래스와 EJB를 Endpoint로 갖는 JAX-RPC 웹 서비스의 생성과 배치 방법에 대해 설명한다.
JEUS JAX-RPC 웹 서비스 생성은 개발 편의를 제공하기 위해 Command Line 툴과 Apache Ant 툴을 사용한다. JAX-RPC 웹 서비스 생성과 배치 작업은 다음의 작업들이 순차적으로 진행된다.
서비스 설정 파일의 작성(service-config.xml)
Java EE 웹 서비스를 위한 WSDL과 JAX-RPC 매핑 파일의 생성
웹 서비스 DD 작성(webservices.xml, jeus-webservices-dd.xml)
생성된 웹 서비스 모듈의 패키징과 배치
자세한 사항은 “JEUS Reference Book”의 “4.10. java2wsdl”과 “JEUS Reference Book”의 “4.11. wsdl2java” 및 “JEUS Reference Book”의 “5.5.1. java2wsdl”과 “JEUS Reference Book”의 “5.5.2. wsdl2java”를 참고한다.
JEUS JAX-RPC 웹 서비스는 service-config.xml과 같이 웹 서비스 생성을 위한 설정을 XML 파일에 저장한다.
<?xml version="1.0" encoding="UTF-8"?> <web-services-config xmlns="http://www.tmaxsoft.com/xml/ns/jeus"> <service> <service-name>DocLitEchoService</service-name> <target-namespace>urn:DocLitService</target-namespace> <output-wsdl-file>DocLitEchoService.wsdl</output-wsdl-file> <output-jaxrpc-mapping-file> DocLitEchoService-mapping.xml </output-jaxrpc-mapping-file> <style>wrapped</style> <interface> <endpoint-interface-class> jeustest.webservices.java2wsdl.doclit.Echo </endpoint-interface-class> </interface> </service> </web-services-config>
위 예에서는 <service-name>에 설정된 'DocLitEchoService'라는 이름의 웹 서비스를 생성하게 되며, 생성되는 WSDL과 매핑 파일은 각각 DocLitEchoService.wsdl과 DocLitEchoService-mapping.xml이 된다.
서비스 스타일은 문서 방식 중 WRAPPED 방식이며, 웹 서비스 Endpoint로는 jeustest.webservices.java2wsdl.doclit.Echo라는 Java 클래스 파일로 설정되었다.
service-config.xml 파일에 대한 자세한 설명은 "JEUS XML Refenece"의 "25. jeus-webservices-config.xml 설정"을 참고한다.
JEUS JAX-RPC 웹 서비스 생성을 위해 Command Line 툴 방식과 Ant Task 방식을 제공한다. 2가지 방법 중 어느 것을 선택해도 무방하며 사용자 편의에 따라 결정한다.
JAX-RPC 웹 서비스는 웹 서비스의 생성을 위한 Command Line 툴을 제공한다.
Usage: java2wsdl [options] configuration_file where [options] include: -classpath <path> specify where to find input class files -cp <path> same as -classpath <path> -d <directory> specify where to place generated output files -verbose [optional] turn verbose mode on
“21.1.1. 서비스 설정 파일 작성”에서 생성한 service-config.xml 파일로 웹 서비스를 생성하려면 Command Line에 명령어을 입력한다.
다음은 JEUS_HOME/sample/classes아래 컴파일된 Java 클래스 Back-end 파일이 있는 경우 명령어 실행의 예이다.
JEUS_HOME/sample$java2wsdl -cp ./classes service-config.xml
위와 같이 명령을 수행하면 JAX-RPC 매핑 파일인 DocLitEchoService-mapping.xml과 WSDL 파일인 DocLitEchoService.wsdl이 생성된다.
JEUS JAX-RPC 웹 서비스는 웹 서비스의 생성을 위한 Ant Task인 java2wsdl을 제공한다. java2wsdl은 서비스 설정 파일의 위치를 입력받아서 WSDL 파일과 JAX-RPC 매핑 파일을 생성한다.
다음과 같이 수행하여 Java 클래스 파일들을 컴파일한다.
ant compile
WSDL 파일과 JAX-RPC 매핑 파일 또한 위의 명령어를 수행하면 './build' 디렉터리에 자동 생성된다.
컴파일 Ant Task는 내부적으로 -pre-compile > do-compile > -post-compile 과정을 거치며 WSDL 파일과 JAX-RPC 매핑 파일을 생성하는 -post-compile은 다음과 같이 구성되어 있다.
<target name="-post-compile"> <mkdir dir="${build.war.dir}/WEB-INF/wsdl"/> <antcall target="java2wsdl"> <param name="java2wsdl.option" value="-classpath ${build.classes.dir} -d ${build.war.dir}/WEB-INF ${src.conf}/service-config.xml" /> </antcall> </target>
java2wsdl Ant Task의 자세한 내용은 “JEUS Reference Book”의 “5.5.1. java2wsdl”을 참고한다.
웹 서비스 DD 파일은 웹 서비스의 배치에 관해 기술한 XML 파일로 웹 서비스의 배치에 관한 정보와 웹 서비스 Back-end를 발견하는 방법에 대한 정보를 웹 서비스 엔진에게 제공한다.
웹 서비스 DD 파일에는 Java EE 웹 서비스 스펙에 규정된 DD 파일인 webservices.xml과 JEUS 웹 서비스를 위한 DD 파일인 jeus-webservices-dd.xml이 있다.
Java EE 웹 서비스 DD 파일명은 반드시 webservices.xml로 해야 한다.
[예 21.1] Java EE 웹 서비스 DD 파일 : << webservices.xml >>
<?xml version="1.0"?> <webservices version="1.1" xmlns="http://java.sun.com/xml/ns/j2ee"> <webservice-description> <webservice-description-name>DocLitEchoService </webservice-description-name> <wsdl-file>WEB-INF/wsdl/DocLitEchoService.wsdl</wsdl-file> <jaxrpc-mapping-file> WEB-INF/DocLitEchoService-mapping.xml </jaxrpc-mapping-file> <port-component> <port-component-name>EchoPort</port-component-name> <wsdl-port xmlns:ns2="urn:DocLitService"> ns2:EchoPort </wsdl-port> <service-endpoint-interface> jeustest.webservices.java2wsdl.doclit.Echo </service-endpoint-interface> <service-impl-bean> <servlet-link>EchoServlet</servlet-link> </service-impl-bean> </port-component> </webservice-description> </webservices>
DocLitEchoService라는 서비스 이름을 가지고, WSDL 파일의 위치는 WAR 파일 내에서
WEB-INF/wsdl 디렉터리 내에 있으며, 그 이름은 DocLitEchoService.wsdl이다. JAX-RPC 매핑 파일의
위치는 WEB-INF 디렉터리이며, DocLitEchoService-mapping.xml이라는 이름을 가지고 있다. 이 서비스에
접근하려면 WSDL에 표기된 포트 중 EchoPort라는 이름을 가지고 있는 포트를 사용하고, 이 포트에 대한 SEI와 서블릿이
정의된다. 보다 자세한 설명은 “제24장 JAX-RPC 웹 서비스 설정 파일 작성”을 참고한다.
JEUS 웹 서비스 DD 파일명은 jeus-webservices-dd.xml로 해야 한다.
[예 21.2] JEUS 웹 서비스 DD 파일 : << jeus-webservices-dd.xml >>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <jeus-webservices-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus"> <service> <webservice-description-name> DocLitEchoService </webservice-description-name> <port> <port-component-name>EchoPort</port-component-name> </port> </service> </jeus-webservices-dd>
DD 파일에 대한 자세한 설명은 "JEUS XML Reference"의 "23. jeus-webservices-dd.xml"을 참고한다.
Java 클래스 웹 서비스는 Java 클래스와 웹 서비스 DD 파일을 웹 모듈처럼 패키징한다. 웹 서비스는 웹 애플리케이션 WAR 파일과 EJB JAR 파일을 포함하는 표준 엔터프라이즈 애플리케이션(Enterprise Application) EAR 파일로 묶이게 된다.
JEUS 웹 컨테이너의 컨텍스트와 웹 애플리케이션에 대한 보다 자세한 설명은 “JEUS Web Engine 안내서”의 “제3장 웹 컨텍스트”를 참고한다.
서블릿 DD 파일(web.xml)의 일반적인 역할은 서블릿과 JSP 컴포넌트의 런타임 속성을 기술하는 것이다. Java 클래스 웹 서비스는 런타임에 서블릿에 Embed된 형태로 연동되므로 web.xml 파일은 Java 클래스 웹 서비스를 배치할 때 필요하다.
다음은 web.xml 파일의 작성 예이다.
[예 21.3] 서블릿 DD 파일 : << web.xml >>
<?xml version="1.0"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"> <servlet> <servlet-name>EchoServlet</servlet-name> <servlet-class> jeustest.webservices.java2wsdl.doclit.EchoImpl </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>EchoServlet</servlet-name> <url-pattern>/DocLitEchoService</url-pattern> </servlet-mapping> </web-app>
<servlet-class>는 실제 서비스를 구현한 로직이 들어있는 Java 클래스의 이름을
텍스트 노드의 값으로 설정하고, <servlet-mapping>의 하위에 <url-pattern>은
실제로 서비스에 접근하기 위한 URL을 값을 설정한다.
JEUS 웹 모듈 DD 파일은 배치하려는 웹 모듈의 컨텍스트를 정의한 파일로 이름은 jeus-web-dd.xml이다.
다음은 DocLitEchoService를 컨텍스트로 가지는 서비스의 JEUS 웹 모듈 DD 파일이다.
[예 21.4] JEUS 웹 모듈 DD 파일 : << jeus-web-dd.xml >>
<?xml version="1.0" encoding="UTF-8"?> <jeus-web-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus"> <context-path>/DocLitEchoService</context-path> <enable-jsp>true</enable-jsp> <auto-reload> <enable-reload>false</enable-reload> <check-on-demand>false</check-on-demand> </auto-reload> <max-instance-pool-size>-1</max-instance-pool-size> <session-config> <tracking-mode> <url>false</url> </tracking-mode> </session-config> </jeus-web-dd>
WAR 파일은 확장명이 '.war'로 끝나는 JAR 압축 파일이며 압축과 압축 해제 알고리즘인 zlib 알고리즘 표준을 따라 압축되는 파일이다. WAR 파일은 서블릿, JSP와 같은 웹 컴포넌트들을 묶는 용도로만 사용되며 다음과 같이 특정한 디렉터리 구조를 가지고 있어야 한다.
WAR | +-- WEB-INF |-- web.xml (서블릿 DD) |-- webservices.xml (표준 웹 서비스 DD) |-- jeus-webservices-dd.xml (JEUS 웹 서비스 DD) |-- jeus-web-dd.xml (JEUS 웹 모듈 DD) |-- Jax-rpc mapping 파일 +-- wsdl | +-- wsdl 파일 | +-- classes | +-- Java 클래스 컴포넌트, 핸들러 구현 등
앞에서 생성한 WSDL 파일, JAX-RPC 매핑 파일, 표준 웹 서비스 DD(webserivices.xml), JEUS 웹 서비스 DD(jeus-webservices-dd.xml), 서블릿 DD(web.xml), JEUS 웹 모듈 DD를 WAR 파일 형태로 묶는다.
JAX-RPC 매핑 파일과 WSDL 파일이 webservices.xml 파일에 <wsdl-file>과 <jax-rpc-mappng-file>로 기술한 위치에 존재한다면 반드시 위의 구조를 따르지 않아도 무방하다.
본 절에서는 EAR 패키징과 배치에 대해서 설명한다.
Java EE 응용 프로그램은 웹 컴포넌트나 EJB, Java EE 커넥터를 사용할 수 있는 하나의 독립적인 비즈니스 솔루션이며, EAR(Enterprise ARchive) 파일로 패키징될 수 있다. EAR 파일은 응용 프로그램의 XML DD를 가지고 있으며, Java EE 컴포넌트와 커넥터 등을 EJB JAR나 WAR 또는 RAR 파일 형태로 패키징하여 포함하고 있다.
Java 클래스 웹 서비스는 서블릿 프로그래밍 모델 위에서 생성되었으므로 WAR 파일 형태로 패키징되고, EJB Endpoint는 SOAP 메시지를 다루는 곳이 EJB이므로 EJB JAR 파일 형태로 패키징된다.
EAR | +-- WAR 파일 | +-- JAR 파일 | +-- EJB 웹 서비스 구성 요소 | +-- META-INF | +-- 표준 application.xml 파일
META-INF 디렉터리에 있는 표준 application.xml 파일에 EAR 패키징한 Java EE 컴포넌트들을 기술한다.
다음은 웹 모듈을 Java EE 구성요소로 가지고 있는 EAR 응용 프로그램의 application.xml 파일의 작성 예이다. <web>에는 웹 모듈 패키징의 이름과 모듈의 컨텍스트의 정보를 설정한다.
[예 21.5] EAR 응용 프로그램 : << application.xml >>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <application version="6" xmlns="http://java.sun.com/xml/ns/javaee"> <module> <web> <web-uri>DocLitEchoService.war</web-uri> <context-root>DocLitEchoService</context-root> </web> </module> </application>
웹 서비스의 배치 작업은 일반적인 Java EE 응용 프로그램의 배치 작업과 동일하다. EAR 배치 작업을 수행함으로써 웹 서비스는 인터넷에서 접근 가능한 서비스로 공개된다.
배치된 서비스의 실제 접근 가능한 URL 주소는 다음과 같다.
http://host:port/DocLitEchoService/DocLitEchoService
EJB를 이용한 웹 서비스의 구현 작업을 완료했다면 실제로 EJB의 비즈니스 로직을 웹 서비스로 전환하고 배치하는 작업이 필요하다. EJB 웹 서비스 생성과 배치 작업의 전체적인 흐름은 Java 클래스 웹 서비스 생성, 배치 작업과 같다. JEUS JAX-RPC 웹 서비스 생성은 개발 편의를 제공하기 위해 Command Line 툴과 Apache Ant 툴을 사용한다.
전체적인 작업 흐름은 다음과 같다.
서비스 설정 파일의 작성(service-config.xml)한다.
Java EE 웹 서비스를 위한 WSDL과 JAX-RPC 매핑 파일의 생성한다.
웹 서비스 DD 작성(webservices.xml, jeus-webservices-dd.xml, ejb-jar.xml)한다.
생성된 웹 서비스 모듈의 패키징과 배치한다.
자세한 사항은 “JEUS Reference Book”의 “4.10. java2wsdl”과 “JEUS Reference Book”의 “4.11. wsdl2java” 및 “JEUS Reference Book”의 “5.5.1. java2wsdl”과 “JEUS Reference Book”의 “5.5.2. wsdl2java”를 참고한다.
다음은 서비스 설정 파일 service-config.xml의 작성 예이다.
[예 21.6] EJB 웹 서비스 설정 파일 : << service-config.xml >>
<?xml version="1.0"?> <web-services-config xmlns="http://www.tmaxsoft.com/xml/ns/jeus"> <service> <service-name>AddressBookService</service-name> <target-namespace>urn:AddressBookService</target-namespace> <style>wrapped</style> <use>literal</use> <interface> <endpoint-interface-class> address.AddressBookIF </endpoint-interface-class> </interface> </service> </web-services-config>
위 예에서는 <service-name>에 설정된 AddressBookService라는 이름의 웹 서비스를 생성하게 되며, 생성되는 WSDL과 매핑 파일은 각각 AddressBookService.wsdl과 AddressBookService-mapping.xml이 된다. 서비스 스타일은 문서 방식 중 WRAPPED 방식이며, 웹 서비스 Endpoint로는 address.AddressBookIF라는 Java 클래스 파일로 설정되었다.
service-config.xml 파일에 대한 보다 자세한 설명은 "JEUS XML Reference"의 "25. jeus-webservices-config.xml 설정"을 참고한다.
JEUS JAX-RPC 웹 서비스는 웹 서비스의 생성을 위해 Command Line 툴 방식과 Ant Task 방식을 제공한다. 웹 서비스 생성을 위해 2가지 방법 중 어느 것을 선택해도 무방하며, 사용자 편의에 따라 결정한다.
JEUS JAX-RPC 웹 서비스는 웹 서비스의 생성을 위한 Command Line 툴을 제공한다.
Usage: java2wsdl [options] configuration_file where [options] include: -classpath <path> specify where to find input class files -cp <path> same as -classpath <path> -d <directory> specify where to place generated output files -level <log-level> specify a log level -verbose [optional] turn verbose mode on
이전 장에서 생성한 service-config.xml 파일로 웹 서비스를 생성하려면 Command Line에서 다음과 같이 입력하여 명령을 수행한다.
다음 예는 컴파일된 Java 클래스 Back-end 파일들이 JEUS_HOME/sample/classes에 존재하는 경우이다.
JEUS_HOME/sample$java2wsdl -cp ./classes ejb-service-config.xml
위와 같이 명령을 수행하면, JAX-RPC 매핑 파일인 AddressBookService-mapping.xml과 WSDL 파일인 AddressBookService.wsdl이 생성된다.
JEUS JAX-RPC 웹 서비스는 웹 서비스의 생성을 위한 Ant Task인 java2wsdl를 제공한다. java2wsdl은 입력으로 서비스 설정 파일의 위치를 받아서 WSDL 파일과 JAX-RPC 매핑 파일을 생성한다.
Java 클래스 파일들을 다음과 같은 명령을 수행하여 컴파일한다.
ant compile
WSDL 파일과 JAX-RPC 매핑 파일 또한 위의 명령어를 수행하면 ./build 디렉터리에 자동 생성된다.
컴파일 Ant Task는 내부적으로 -pre-compile > do-compile > -post-compile 과정을 거치며 WSDL 파일과 JAX-RPC 매핑 파일을 생성하는 -post-compile은 다음과 같이 구성되어 있다.
<target name="-post-compile"> <mkdir dir="${build.classes.dir}/META-INF/wsdl"/> <antcall target="java2wsdl"> <param name="java2wsdl.option" value="-classpath ${build.classes.dir} -d ${build.classes.dir}/META-INF ${src.conf}/ejb-service-config.xml" /> </antcall> </target>
서비스 설정 파일 경로를 <java2wsdl>의 'configfilepath' 속성에 입력하고, 컴파일된 Java 클래스 파일들의 경로를 <classpath>의 'refid' 속성에 입력한다. 위와 같은 명령을 수행하고 나면 WSDL 파일과 JAX-RPC 매핑 파일이 생성된다.
java2wsdl Task에 관한 보다 자세한 정보는 “JEUS Reference Book”의 “5.5.1. java2wsdl”을 참고한다.
웹 서비스 DD 파일은 웹 서비스의 배치에 관해 기술한 XML 파일로 웹 서비스의 배치에 관한 정보와 웹 서 비스 Back-end를 발견하는 방법에 대한 정보를 웹 서비스 엔진에게 제공한다.
웹 서비스 DD 파일은 Java EE 웹 서비스 스펙에 규정된 DD 파일인 webservices.xml과 JEUS 웹 서비스를 위한 DD 파일인 jeus-webservices-dd.xml이 있다.
Java EE 웹 서비스 DD 파일명은 반드시 webservices.xml로 해야 한다.
[예 21.7] Java EE 웹 서비스 DD 파일 : << webservices.xml >>
<?xml version="1.0"?> <webservices version="1.1" xmlns="http://java.sun.com/xml/ns/j2ee"> <webservice-description> <webservice-description-name> AddressBookService </webservice-description-name> <wsdl-file> META-INF/wsdl/AddressBookService.wsdl </wsdl-file> <jaxrpc-mapping-file> META-INF/AddressBookService-mapping.xml </jaxrpc-mapping-file> <port-component> <port-component-name> AddressBookIFPort </port-component-name> <wsdl-port xmlns:ns2="urn:AddressBookService"> ns2:AddressBookIFPort </wsdl-port> <service-endpoint-interface> address.AddressBookIF </service-endpoint-interface> <service-impl-bean> <ejb-link>AddressEJB</ejb-link> </service-impl-bean> </port-component> </webservice-description> </webservices>
AddressBookService라는 서비스 이름을 가지고, WSDL 파일의 위치는 JAR 파일 내에서
META-INF/wsdl 디렉터리 내에 있으며, 그 이름은 AddressBookService.wsdl이다. JAX-RPC 매핑
파일의 위치는 META-INF 디렉터리이며, AddressBookService-mapping.xml이라는 이름을 가지고
있다.
이 서비스에 접근하려면 WSDL에 표기된 포트 중 AddressBookIFPort 라는 이름을 가지고 있는 포트를 사용하고, 이 포트에 대한 SEI와 EJB가 정의된다.
JEUS 웹 서비스 DD 파일명은 jeus-webservices-dd.xml로 해야 한다.
[예 21.8] JEUS 웹 서비스 DD 파일 : << jeus-webservices-dd.xml >>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <jeus-webservices-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus"> <ejb-context-path>webservice</ejb-context-path> <service> <webservice-description-name> AddressBookService </webservice-description-name> <port> <port-component-name> AddressBookIFPort </port-component-name> <ejb-endpoint-url> /AddressBookService </ejb-endpoint-url> </port> </service> </jeus-webservices-dd>
JEUS 웹 서비스 DD 파일에는 EJB 웹 서비스로 접근하기 위한 URL 접근 경로를 기술한다. URL
접근 경로는 컨텍스트 경로와 URL 패턴을 포함한다. 컨텍스트 경로는 <ejb-context-path>로 지정한다.
URL 패턴은 <port> 아래의 <ejb-endpoint-url>로 지정한다.
위의 경우 웹 서비스에 접근하기 위한 실제 URL 주소는 다음과 같다.
http://host:port/webservice/AddressBookService
EJB 웹 서비스는 EJB JAR 패키징 안에 웹 서비스 DD 파일과 WSDL을 같이 포함한다. 웹 서비스는 웹 애플리케이션 WAR 파일과 EJB JAR 파일을 포함하는 표준 엔터프라이즈 애플리케이션(Enterprise Application) EAR 파일로 묶이게 된다.
다음은 ejb-jar.xml 파일의 한 예이다.
[예 21.9] EJB DD 파일 : << ejb-jar.xml >>
<?xml version="1.0" encoding="UTF-8"?> <ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd" version="2.1"> <display-name>AddressEJB</display-name> <enterprise-beans> <session> <display-name>AddressEJB</display-name> <ejb-name>AddressEJB</ejb-name> <service-endpoint> address.AddressBookIF </service-endpoint> <ejb-class>address.AddressBookEJB</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> </ejb-jar>
<ejb-class>는 실제 서비스를 구현한 로직이 들어있는 Bean 클래스의 이름을 텍스트
노드의 값으로 갖는다. <service-endpoint>는 EJB 웹 서비스의 SEI 클래스의 이름을 텍스트 노드의
값으로 갖는다.
다음은 JEUS에 필요한 또 다른 EJB DD이다. 파일 이름은 jeus-ejb-dd.xml이다.
[예 21.10] EJB DD 파일 : << jeus-ejb-dd.xml >>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <jeus-ejb-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus"> <beanlist> <jeus-bean> <ejb-name>AddressEJB</ejb-name> <export-name>AddressEJB</export-name> </jeus-bean> </beanlist> </jeus-ejb-dd>
지금까지 작성한 EJB 구현 클래스들과 SEI 그리고 웹 서비스 DD, EJB DD를 하나의 JAR 파일로 패키징한다.
JAR 패키징한 구조는 다음과 같다.
JAR | +-- META-INF |-- ejb-jar.xml (표준 EJB DD) |-- webservices.xml (표준 웹 서비스 DD) |-- jeus-webservices-dd.xml (JEUS 웹 서비스 DD) |-- jeus-ejb-dd.xml (JEUS EJB DD) +-- Jax-rpc mapping 파일 +-- wsdl | +-- wsdl 파일 | +-- EJB 클래스 컴포넌트, J2EE Portable Artifact
JAX-RPC 매핑 파일과 WSDL 파일이 webservices.xml 파일의 <wsdl-file>과 <jax-rpc-mapping-file>로 기술한 위치에 존재한다면 반드시 위의 구조를 따르지 않아도 무방하다.
본 절에서는 EAR 패키징과 배치에 대해서 설명한다.
Java EE 응용 프로그램은 웹 컴포넌트나 EJB, Java EE 커넥터를 사용할 수 있는 하나의 독립적인 비즈니스 솔루션이며, EAR(Enterprise ARchive) 파일로 패키징될 수 있다. EAR 파일은 응용 프로그램의 XML DD를 가지고 있으며, Java EE 컴포넌트와 커넥터 등을 EJB JAR나 WAR, 혹은 RAR 파일 형태로 패키징하여 포함하고 있다.
JSE(JAX-RPC Service Endpoint)는 서블릿 프로그래밍 모델 위에서 생성되었으므로 WAR 파일 형태로 패키징되고, EJB Endpoint는 SOAP 메시지를 다루는 곳이 EJB이므로 EJB JAR 파일 형태로 패키징된다.
EAR | +-- WAR 파일 | +-- JSE(JAX-RPC Servlet Endpoint) 웹 서비스 구성 요소 | +-- JAR 파일 | +-- EJB 웹 서비스 구성 요소 | +-- META-INF | +-- 표준 application.xml 파일
META-INF 디렉터리 안의 표준 application.xml 파일에 EAR 패키징한 Java EE 컴포넌트들을 기술한다.
다음은 웹 모듈을 Java EE 구성요소로 가지고 있는 EAR 응용 프로그램의 application.xml 파일의 한 예이다. <ejb>에서는 EJB 웹 서비스의 JAR 패키징의 이름에 대한 정보를 가지고 있다.
[예 21.11] EAR 응용 프로그램 : << application.xml >>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <application version="6" xmlns:ns1="http://java.sun.com/xml/ns/javaee"> <module> <ejb>AddressBook.jar</ejb> </module> </application>
웹 서비스의 배치 작업은 일반적인 Java EE 응용 프로그램의 배치 작업과 동일하다. EAR 배치 작업을 수행함으로써 웹 서비스는 인터넷에서 접근 가능한 서비스로 공개된다.