java
- jQueryMobile기반의 egov mobile 샘플 소스 2013.09.28
- hibernate를 만든 Gavin King의 새로운 언어 Ceylon 1.0 스펙 완료 2013.09.27
- [egov]hsqldb 메모리 db 설정 2013.09.26
- [err]Java8에서 JSP 컴파일 안 되는 경우 2013.09.26
- [egov]실행환경 업무처리, 데이터처리, 연계통합 레이어 2013.09.16
- [egov]실행환경 화면처리 레이어 2013.09.12
- 전자정부 표준프레임워크 실행환경 8가지 레이어 2013.09.11
- [egov]톰캣 서버 메이븐에서 호출하기 2013.07.11
- [egov] 넥서스 참 어렵다. 2013.07.09 2
- [egov]개발환경 2.6 설치 위치 2013.07.06
jQueryMobile기반의 egov mobile 샘플 소스
hibernate를 만든 Gavin King의 새로운 언어 Ceylon 1.0 스펙 완료
Ceylon (http://ceylon-lang.org) 언어는 Java와 JavaScript 두 가지 플랫폼을 지원합니다. JVM 또는 node.js 플랫폼에서 동작하는 진정한 일타쌍피 언어이죠.
이 실험적인 언어의 기능(Feature)이 정해졌다고 합니다.
http://www.theserverside.com/news/thread.tss?thread_id=77418 (Gavin King이 직접 쓴 뉴스)
http://www.infoq.com/news/2013/09/ceylon-beta
Ceylon은 C, Java언어를 아시는 분들은 아주 잘 읽힙니다. html도 구조대로 프로그래밍을 하고 동적으로 생성해줍니다.
Table table = Table {
title = "Squares";
rows = 5;
Border {
padding = 2;
weight = 1;
};
Column {
heading = "x";
width = 10;
String content(Integer row) {
return row.string;
}
},
Column {
heading = "x^2";
width=10;
String content(Integer row) {
return (row^2).string;
}
}
};
하이버네이트로 자바 표준인 JPA도 이끌어낸 Gavin이라 이 분이 만든 Ceylon이 어떤 반향을 일으킬 것 같습니다. 특히나 메이저 언어가 된 자바스크립트와 전혀 다른 언어 자바를 통합시켰으니까요.
15분이면 Ceylon 언어를 탐험하실 수 있습니다.
http://ceylon-lang.org/documentation/current/introduction/
영어가 안되서 당황하시면 안 됩니다. ^^;
[egov]hsqldb 메모리 db 설정
표준프레임워크의 자동생성된 샘플은 hsqldb를 기본적으로 이용하고 있습니다. 2.6부터는 hsqldb서버를 따로 실행하지 않고, 바로 실행합니다.
datasource 설정부터 찾아보겠습니다.
ctrl+shift+R(맥은 cmd+shift+R)로 Open Resource 창을 엽니다. *data라고 검색어를 입력하면 context-datasource.xml 파일이 보입니다. 선택해서 파일을 엽니다.
<jdbc:embedded-database> 설정이 HSQL을 지정하고 있습니다. db파일의 위치는 classpath상에 있고, db/sampledb.sql 입니다. sampledb.sql 파일을 선택하고 ctrl+shift+R 단축키를 입력하면 sampledb.sql 파일을 쉽게 열 수 있습니다.
src/main/resources 폴더 아래 db 폴더가 있고, 그 아래 sampledb.sql 파일이 있습니다. 파일을 열어서 sql 내역을 살펴보겠습니다.
CREATE MEMORY TABLE SAMPLE(...) 과 같은 SQL을 볼 수 있습니다.
메모리 DB를 사용하면 테스트를 용이하게 할 수 있는 장점이 있습니다. 딱 거기까지입니다. 익숙하게 다루기까지는 연습이 많이 필요할 것 같습니다.
[err]Java8에서 JSP 컴파일 안 되는 경우
맥에서 java8 현재 RC1을 사용하고 있는데, jsp가 컴파일이 안 되는 이슈가 있네요.
HTTP Status 500 - Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files Stacktrace:
type Exception report
message Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files Stacktrace:
description The server encountered an internal error (Unable to compile class for JSP: An error occurred at line: 1 in the generated java file The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files Stacktrace:) that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 1 in the generated java file
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:469)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.28 logs.
Apache Tomcat/7.0.28
톰캣을 선택하고 Edit... 버튼을 클릭합니다.
JRE: 항목이 Java SE 8로 되어 있군요. SE(시)8
Workbench default JRE 는 이클립스 워크스페이스에서 기본 지원하는 버전을 사용하는데, 그냥 맘편하게 Java SE 7 으로 지정하는 것도 나쁘지 않습니다. 기본환경이 언제 저를 배신할 지 모르기 때문이죠.
정식 Java SE 8이 나오면 제대로 잘 되기를 바래봅니다.
아, 오라클
[egov]실행환경 업무처리, 데이터처리, 연계통합 레이어
업무처리 (Business Logic Layer)
업무처리 레이어는 업무 프로그램의 업무 로직을 담당하는 레이어로서, 업무 흐름 제어, 에러 처리 등의 기능을 제공합니다.
<그림> 업무처리 레이어 구성
업무처리 레이어는 Spring Web Flow, Spring 이상 2가지 오픈소스를 사용합니다.
프로세스 제어(Process Control)을 담당하는 웹 플로우는 페이지 흐름(flow)의 정의와 수행을 처리합니다.
에러 처리(Exception Handling)는 표준프레임워크 기반의 시스템 개발시 Exception에 따라서 특정 로직을 실행하여 Exception에 따라 적절한 대응을 할 수 있습니다.
[egov]실행환경 화면처리 레이어
화면처리 레이어(Presentation Layer)
화면처리 레이어는 MVC(Model-View-Controller) 패턴에서 View에 해당합니다. 화면처리 레이어의 구성은 다음과 같습니다.
<그림> 화면처리 레이어 구성
Spring MVC, Internationalization, Ajax Support, Security, UI Adaptor 이상 5가지 기능을 제공합니다.
MVC 패턴의 프레임워크는 스프링 MVC, 스트럿츠(Struts), 웹워크(Webwork) 등이 있지만, 표준프레임워크에서는 스프링 MVC를 채택하였습니다.
국제화(Internationalization) 기능은 다국어를 처리하는 방법입니다. 스프링 MVC의 LocaleResolver를 이용합니다. 브라우저 헤더, 세션, 쿠키 등에 있는 언어 정보를 이용해서 해당 언어로 페이지를 보여주는 기능입니다.
Ajax 지원은 AjaxTags 라이브러리를 이용합니다. Ajax를 이용해 자주 사용되는 기능을 custom tag형태로 제공합니다.
인증, 권한 같은 일반적인(통상적인) 개념의 Security 서비스는 Spring Security를 활용한 공통기반 레이어에
서 제공합니다. 화면처리 레이어의 Security 서비스는 입력값 유효성 검증 기능을 제공한다. 스프링과 연결되는 자카르타 커먼스 밸리데이터(Jakarta Commons Validator)를 이용합니다.
UI 어댑터는 표준프레임워크와 RIA(Rich Internet Application) 솔루션을 연결하기 위한 기능입니다. 마이플랫폼 등의 상용 솔루션과 연결을 지원하는 기능입니다.
전자정부 표준프레임워크 실행환경 8가지 레이어
전자정부 표준프레임워크의 실행환경은 애플리케이션 프레임워크와 라이브러리 39가지가 8개의 서비스 그룹으로 구성되어 있습니다.
그림과 같이 공통기반 위에 화면처리, 업무처리, 데이터처리, 연계통합, 배치처리, 모바일 화면처리, 모바일 디바이스 API 레이어(Layer)들이 있습니다.
공통기반 (Foundation Layer)
공통기반 레이어는 아래 그림과 같이 구성되어 있습니다. 20가지 기능별 컴포넌트들은 실행환경의 각 레이어에서 공통적으로 사용되는 기능을 제공합니다.
AOP, Cache, Compress/Decompress, Encryption/Decryption, Excel, File Handling, File Upload/Download, FTP, ID Generation, IoC Container, Logging, Mail, Marshalling/Unmarshalling, Object Pooling, Property, Resource, Scheduling, Server Security, String Uril, XML Manipulation 이상 20가지의 공통기능을 제공합니다.
이 중에서 가장 주의깊게 봐야할 것이 IoC Container입니다. 스프링의 핵심이고, 이것을 기준으로 표준프레임워크의 애플리케이션 패턴이 이루어집니다. 나머지 기능들도 각기 중요한 역할을 하기 때문에 후반에 하나씩 살펴보겠습니다.
[egov]톰캣 서버 메이븐에서 호출하기
pom.xml에 다음 코드를 추가하면 mvn tomcat:run 으로 프로젝트를 실행할 수 있습니다. 설치된 톰캣이 없어도 톰캣은 자동으로 다운로드합니다.
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat6-maven-plugin</artifactId> <version>2.1</version> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> </plugin> </plugins> </pluginManagement> </build>
[egov] 넥서스 참 어렵다.
계룡대에 가서 전자정부 표준프레임워크 강의 때 인터넷이 안 되서 많이 힘들었습니다.
이런 젠장
메이븐 쓰는데, 인터넷이 연결 안 된다니.
말년에 노 인터넷이라니...
넥서스가 대안이라고 생각했는데,
쉽지 않네요.
[egov]개발환경 2.6 설치 위치
7zip으로 압축된 실행파일을 통해서 설치하면 됩니다.
C:\ 에 설치하는 것을 권장합니다.