블로그 이미지
Max.

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

Notice

2011.08.26 12:07 개발관련

먼저 업데이트할 기능을 추가하고, 저장소에 결과물을 반영한다.

1) addon 소스 수정
    - 'max web' 명령어에 '--entity' 옵션항을 추가하고 기능을 업데이트 함.

2) compile
   - 도스창에서 mvn assembly:assembly 실행하여, jar 생성

3) 결과물을 repository에 전송
    - eclipse를 이용하여 커밋 



최신 번들을 다운받아 사용한다.

1) 기존 OSGi 번들 제거
    - 'max osgi uninstall'

2) 새로 업데이트된 번들 넣기
    - 'max osgi install --version 1.0.0.M2'

3) 테스트 하기
    - 'max web --class ~.template.web.TemplateController --service ~.template.service.TemplateService --entity ~.template.domain.ContentPage' 을 실행하여 jsp 페이지까지 생성되면 성공이다.


 
SNG 프로젝트에 필요할때마다 수정해서 적용중인데, 불편하거나, 버그가 있을때 바로 수정해서 사용하기 편리하다. OSGi 번들의 장점을 어느정도 느낄수 있다. 특히 여러가지 과정을 max osgi install로 묶어놔서 더욱 편리하게 사용할수 있는 점이 좋은 것 같다.


 
저작자 표시
신고
posted by Max.
TAG ROO, Spring
2011.07.08 08:58 개발관련
희망의 나라로....




저작자 표시
신고
posted by Max.
TAG addon, max, ROO, Spring
2011.07.06 19:39 개발관련
>roo
roo>osgi start --url http://localhost/test/addon/com.ks.spring.roo.addon.maxosgi-1.0.0.M2.jar 
roo> max osgi install
roo>max show start --topLevelPackage net.max --projectName test2
>q
>mvn jetty:run
>roo
roo>max osgi uninstall  

 
저작자 표시
신고
posted by Max.
TAG addon, max, ROO, spirng
2011.07.04 10:13 개발관련


spring roo addon max M1 final...
저작자 표시
신고
posted by Max.
TAG addon, max, ROO, Spring
2011.06.14 10:48 개발관련

D:\work\test2>roo
    ____  ____  ____
   / __ \/ __ \/ __ \
  / /_/ / / / / / / /
 / _, _/ /_/ / /_/ /
/_/ |_|\____/\____/    1.1.3.RELEASE [rev 4404ffb]


Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
0 upgrades available (plus 29 upgrades not visible due to your version stability setting of RELEASE)
roo>
roo> project --topLevelPackage net.max --projectName test2
roo> persistence setup --provider HIBERNATE --database MYSQL 
roo> entity --class ~.domain.Account
roo> field string --fieldName name
roo> field string --fieldName email
roo> max setup
roo> max service --class ~.service.AccountService --entity ~.domain.Account
roo> max web --class ~.web.AccountController --service ~.service.AccountService
roo> q
> mvn jetty:run


 일단 여기까지....
저작자 표시
신고
posted by Max.
TAG addon, max, ROO
2011.06.14 08:27 개발관련
일단 거창하게.....

 
음..... 좀 많네.... 
심심할때 하나씩 만들다 보면.... 뭐라도 나오겠지... 
저작자 표시
신고
posted by Max.
TAG addon, ROO
2011.06.13 08:51 개발관련
1) 구현하려는 코드의 layer는 service와 UI 부분인데, 기존의 Roo addon의 해당 addon들이 활용성이 떨어지는 이유는 복잡하고, 유연성이 작았기 때문이다.

2)  Scaffold방식의 문제점은, 극도의 유연성을 요하는 UI에 ITDs를 적용함으로, 유연성에 제약을 줬다는 것이고, 편리함이나 복잡해 보이는 것은 핵심이 아니다.

3) 따라서, UI에서는 ITDs 포기한다. 모든 생성코드는 순수 java로 한다. 순수자바를 생성할때 문제는, 중복코드다. 이것은 Generic으로 해결한다.

4) MaxGenericService, MaxGenericController를 만든다.  또한, tiles 보다 sitemesh를 사용할것이고, jspx 보다 jsp를 사용할 것이다.
저작자 표시
신고
posted by Max.
TAG addon, ROO
2011.06.13 08:37 개발관련
일반적인 addon 개발 절차는 아래처럼 한다.

1) addon 프로젝트 수정 후

2)  perform assembly
(컴파일)

3) osgi ps
(osgi 번들 확인)

4) osgi uninstall --bundleSymbolicName com.ks.spring.roo.addon.maxservice
(만약 첫번째라면, osgi start 먼저 한다.)

5) osgi start --url http://localhost/testweb/addon/com.ks.spring.roo.addon.maxservice-0.1.0.BUILD-SNAPSHOT.jar 
(현재버전은(1.1.3) window 계열이 아니라면 file:// 로 대신할수 있다.) 

6) osgi ps
(osgi 번들 확인)

7) 이후 타켓 프로젝트에서 테스트 한다.

8) 다시 1)번을 반복한다. 

저작자 표시
신고
posted by Max.
TAG addon, ROO
2011.06.13 08:32 개발관련
roo에서 소스생성방법은 크게 두가지다. shell command로 java나 리소스 파일을 생성하는 것과 metadata로 aj파일을 생성하는 방법이다. 각각 쓰임새가 다르다. addon 개발시 특징을 살리면, 효과적으로 개발할수 있다.

1) Command
max service --name ~.account.service.AccountService --entity ~.account.domain.Account 

[생성] ~.account.service.AccountService.java
[생성] ~.account.service.AccountServiceResult.java
[생성] ~.account.service.impl.AccountServiceImpl.java

max web --name ~.account.web.AccountController --service ~.account.service.AccountService

[생성] ~.account.web.AccountController.java

2) Metadata
@Roo_Max_Service
[생성] ~.account.service.impl.AccountServiceImpl_Roo_Service.aj

@Roo_Max_Service_Result

[생성] ~.account.service.AccountServiceResult_Roo_Result.aj

@Roo_Max_Web(
create=true,
update=true,
delete=true,
show=true,
list=true
)

[생성] /src/webapp/WEB-INF/views/accounts/create.jsp
[생성] /src/webapp/WEB-INF/views/accounts/update.jsp
[생성] /src/webapp/WEB-INF/views/accounts/delete.jsp
[생성] /src/webapp/WEB-INF/views/accounts/show.jsp
[생성] /src/webapp/WEB-INF/views/accounts/list.jsp

저작자 표시
신고
posted by Max.
TAG addon, ROO
2011.06.05 09:49 개발관련
기본의 무식하게 절차적인 방법으로 작은 소스코드 생성에도 많은 코딩량 때문에 지쳤었는데, 멋지네... 그런데 XML(설정이나 메이븐)은 아직도 고전적인 방법인가? Template를 이용하면 될것 같은데...

1) shell command를 직접 이용하는 방법

// -----------------------------------------------------------------------------------
// Create User entity
// -----------------------------------------------------------------------------------
shell.executeCommand("entity --class " + entityPackage
+ ".User --testAutomatically --permitReservedWords");
shell.executeCommand("field string --fieldName firstName --sizeMin 1 --notNull");
shell.executeCommand("field string --fieldName lastName --sizeMin 1 --notNull");
shell.executeCommand("field string --fieldName emailAddress --sizeMin 1 --notNull --unique");
shell.executeCommand("field string --fieldName password --sizeMin 1 --notNull");
shell.executeCommand("field date --fieldName activationDate --type java.util.Date ");
shell.executeCommand("field string --fieldName activationKey ");
shell.executeCommand("field boolean --fieldName enabled ");
shell.executeCommand("field boolean --fieldName locked ");



2) Template를 이용하는 방법

Map<String, String> map = new HashMap<String, String>();

map.put(pathResolver.getIdentifier(Path.SRC_MAIN_JAVA,
finalControllerPackage.replace('.', separator) + separator
+ "ChangePasswordController.java"),
"ChangePasswordController.java-template");

map.put(pathResolver.getIdentifier(Path.SRC_MAIN_JAVA,
finalControllerPackage.replace('.', separator) + separator
+ "ChangePasswordForm.java"),
"ChangePasswordForm.java-template");



이제 노트북끄고, 놀려가야지...
 
 
저작자 표시
신고
posted by Max.
TAG addon, ROO