GlueSDK 다운로드 (Welcome -> '솔루션 패키지 다운로드' 부분 참고)
예제 Application 작성 (sample.zip 제공)
Eclipse에서 Java Project 를 생성합니다.
그리고 다음 6개 파일을 생성합니다. 실행시 필요한 라이브러리는 GlueSDK에 포함되어 있습니다.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> <bean id="serviceManager" class="com.poscoict.glueframework.biz.control.GlueServiceManagerImpl"> <property name="cacheManager" ref="cacheManager" /> <property name="serviceLoader" ref="serviceLoader" /> </bean> <bean id="cacheManager" class="com.poscoict.glueframework.cache.ehcache.GlueEhCacheManager"/> <bean id="serviceLoader" class="com.poscoict.glueframework.biz.control.GlueServiceLoader"/> </beans>
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false" name="__DEFAULT__"> <cache name="_default-region" maxElementsInMemory="500" eternal="true" /> <cache name="_service-region" maxElementsInMemory="500" eternal="true" /> </ehcache>
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%thread] %-5level %logger - %msg%n</pattern> </encoder> </appender> <logger name="com.poscoict"> <level value="debug" /> </logger> <logger name="org.springframework"> <level value="info" /> </logger> <root level="warn"> <appender-ref ref="CONSOLE" /> </root> </configuration>
<?xml version="1.0" encoding="UTF-8"?> <service name="hello-service" initial="HelloActivity" xmlns="http://www.poscoict.com/glueframework/service"> <activity name="HelloActivity" class="sample.activity.HelloActivity"> <transition name="success" value="end"/> </activity> </service>
package sample.activity; import com.poscoict.glueframework.biz.activity.GlueActivity; import com.poscoict.glueframework.biz.control.GlueBizControlConstants; import com.poscoict.glueframework.context.GlueContext; public class HelloActivity extends GlueActivity<GlueContext> { @Override public String runActivity( GlueContext ctx ) { System.out.println( "ServiceName : " + ctx.get( GlueBizControlConstants.SERVICE_NAME ) ); System.out.println( "This is '" + this.getName() + "' activity" ); Object input = ctx.get( "input" ); System.out.println( "data : " + input ); Object output = "Hello " + input + "!!!"; ctx.put( "result", output ); return GlueBizControlConstants.SUCCESS; } }
package test; import com.poscoict.glueframework.biz.control.GlueBizControlConstants; import com.poscoict.glueframework.biz.control.GlueBizController; import com.poscoict.glueframework.biz.control.GlueBizProvider; import com.poscoict.glueframework.context.GlueContext; import com.poscoict.glueframework.context.GlueDefaultContext; public class Test { public static void main( String[] args ) { GlueContext ctx = new GlueDefaultContext(); ctx.put( GlueBizControlConstants.SERVICE_NAME, "hello-service" ); ctx.put( "input", "Glue" ); GlueBizController controller = GlueBizProvider.getController(); controller.doAction( ctx ); System.out.println( ctx.get( "result" ) ); } }
초간단 hello-service 실행시 필요한 library 목록은 다음과 같습니다.
glue-core-4.2.3-RELEASE.jar |
glue-schema-4.2.3-RELEASE.jar |
license-api-1.1.0.jar |
xmlbeans-2.4.0.jar |
stax-api-1.0.1.jar |
ehcache-core-2.6.6.jar |
slf4j-api-1.7.2.jar |
logback-classic-1.0.13.jar |
logback-core-1.0.13.jar |
jcl-over-slf4j-1.6.6.jar |
spring-beans-3.2.8.RELEASE.jar |
spring-context-3.2.8.RELEASE.jar |
spring-core-3.2.8.RELEASE.jar |
spring-expression-3.2.8.RELEASE.jar |
Test.class를 실행하면 다음과 같은 실행 로그를 확인할 수 있습니다.
[main] INFO com.poscoict.glueframework.context.GlueStaticContext - glueframework version : 4.2.3-RELEASE [main] INFO com.poscoict.glueframework.context.GlueStaticContext - EDUCATION [main] WARN com.poscoict.glueframework.context.GlueStaticContext - Check Java Option 'CONFIG_PATH' [main] INFO org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@f73c1: startup date [Tue Aug 12 16:10:19 GMT+09:00 2014]; root of context hierarchy [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext.xml] [main] INFO org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1ec8909: defining beans [serviceManager,serviceLoader,cacheManager]; root of factory hierarchy [main] WARN com.poscoict.glueframework.biz.control.GlueBizControllerImpl - running in EDUCATION MODE : 1 [main] INFO com.poscoict.glueframework.biz.control.GlueBizControllerImpl - ServiceName:[hello-service] StartTime[Tue Aug 12 16:10:20 GMT+09:00 2014] [main] WARN com.poscoict.glueframework.cache.ehcache.GlueEhCacheManager - CacheManager does not exist for [__DEFAULT__] [main] DEBUG com.poscoict.glueframework.cache.ehcache.GlueEhCacheManager - Default CacheManager is created and returned : [__DEFAULT__] [main] DEBUG com.poscoict.glueframework.biz.control.GlueServiceLoader - Loading service file : /C:/eclipse/workspace-glue-4-sample/sample-parent/sample-hello/target/classes/service%5chello-service.xml [main] INFO com.poscoict.glueframework.biz.control.GlueService - ActivityName:[hello-service][HelloActivity] StartTime[Tue Aug 12 16:10:21 GMT+09:00 2014] ServiceName : hello-service This is 'HelloActivity' activity data : Glue [main] INFO com.poscoict.glueframework.biz.control.GlueService - ActivityName:[hello-service][HelloActivity] EndTime[Tue Aug 12 16:10:21 GMT+09:00 2014] RunTime[1] [main] INFO com.poscoict.glueframework.biz.control.GlueBizControllerImpl - ServiceName:[hello-service] EndTime[Tue Aug 12 16:10:21 GMT+09:00 2014] RunTime:[1120] Hello Glue!!!