java daemon program을 윈도우 서버 서비스에 등록하기 위해 구글링을 하다가 발견한 sc.exe

윈도우에 이런 명령어가 있다는 사실조차도 모르고 있었습니다.

Win32 응용프로그램 전용 명령어라서 java daemon을 실행하기 위한 bat 파일등은 사용할수 없는 제약이 있긴 합니다.

하지만 이 명령어의 옵션실행시 참 까다로운 syntax 형식을 발견하게 되었습니다.


만약 "testService" 라는 서비스를 등록하고자 한다면 다음과 같이 옵션을 주어서 실행시킵니다.

c:>sc  create "testSevice" binPath="c:\testservice.exe"


이렇게 할 경우 아래와 같은 메시지를 만납니다.

D:\>sc create "testService" binPath="c:\testService.exe"

설명:

        레지스트리 및 서비스 데이터베이스에 서비스 항목을 만듭니다.

사용법:

        sc <서버>create [서비스 이름] [binPath= ] <옵션1> <옵션2>...


옵션:

참고: 옵션 이름은 등호(=)를 포함합니다.

      등호와 값 사이에는 공백이 한 칸 있어야 합니다.

 type= <own|share|interact|kernel|filesys|rec>

       (default = own)

 start= <boot|system|auto|demand|disabled>

       (default = demand)

 error= <normal|severe|critical|ignore>

       (default = normal)

 binPath= <BinaryPathName>

 group= <LoadOrderGroup>

 tag= <yes|no>

 depend= <종속성(슬래시(/)로 구분)>

 obj= <AccountName|ObjectName>

       (default = LocalSystem)

 DisplayName= <표시 이름>

 password= <암호>



공백을 넣으라고? 하면서 다음과 같이 바꿔보았습니다.

c:>sc  create "testSevice" binPath = "c:\testservice.exe"


동일한 메시지가 나옵니다.

원인은 바로 "등호와 값사이" 입니다.

c:>sc  create "testSevice" binPath= "c:\testservice.exe"


비교하자면 binPath와 "=" 사이는 공백이 없어야 하고 "=" 과 "c:\testService.exe" 사이에는 공백이 있어야 한다는 것입니다.


참 까다로운 규칙입니다. 


다 붙여도 안되고 다 띄워도 안되고 등호와 값 사이에만 공백을 띄워야 합니다. 한칸을 띄우던 열칸을 띄우던 상관은 없습니다.








Windows batch 파일로 스크립트를 만들면서 날짜별 백업파일을(filename.ext.yyyymmdd_hhmi) 만들어서 사용하는데, 간단하지만 변수가 몇가지 발생합니다.

 

즉 OS에서 설정한 날짜포맷을 먼저 확인해야 오류가 발생하지 않게 됩니다.

 

보통 일반적인 PC의 windows 환경에서는 다음과 같이 날짜 및 시간이 표시됩니다.

icrosoft Windows [Version 6.1.7601]
opyright (c) 2009 Microsoft Corporation. All rights reserved.

 

:\Users\Guest>date
현재 날짜: 2014-12-16

 

C:\Users\Guest>time
현재 시간:  9:25:59.93

 

이경우 yyyymmdd_hhmi 형식의 date_time 날짜는 다음과 같은 과정으로 생성하였습니다.

 

1. 날짜, 시간에서 구분자 ("-", ":")를 제거합니다.

2. 시간은 초단위까지만 사용하기 위해 "." 이전까지만 구합니다.

3. 날짜 + 시간 문자열로 만들고 원본파일에 백업구분 문자열을 붙여서 move를 합니다.

 

set date2=%date:-=%
set time2=%time: =0%
set time2=%time2::=%
set time3=%time2:~0,6%

 

set date_time=%date2%_%time3%

set ROOT=d:\backup
set BACKUP_PATH=%ROOT%\%org_name%.%date_time% 

 

그런데 Default 한글 OS가 아니거나  날짜, 시간형식을 변경한 Windows에서는 문자열을 substring할때 주의해야 합니다.

 

D:\>date
The current date is: Tue 12/16/2014

 

C:\>date
The current date is: 12/15/2014 Mon

 

날짜형식이 위와같이 나오는 경우 치환문자열은 "-" 대신 "/" 를 사용해야 하고, 공백문자열만 제거하거나 요일과 공백을 모두 제거한 후 사용하도록 한다.

 

 

 

 

 

 

 

 

 

 



eclipse에서 개발을 하다보면 project 환경을 변경해가면서 테스트 해야할 경우가 발생합니다.

또는 Tomcat5.0에서 테스트하다가 7.0에서 테스트해야 하는 경우가 있습니다.

 

만약 Tomcat7.0에서 테스트하던것을 Tomcat5.0으로 낮춰서 테스트하려고 하면 java 버전도 변경해야하고(jdk1.4), servlet 버전도 변경해야 합니다. 최소 2.4로 낮춰줘야 합니다.

 

아래 이미지와 같이 Project Facets 에서 변경을 합니다. 하지만 이게 제대로 안되는 경우가 많습니다.

 

 

이클립스의 프로젝트 환경설정이 대부분 xml 기반으로 돌아가는데, 아마도 lock이 걸려서 그런게 아닌가 예상해봅니다.

 

이경우 해당 환경파일을 직접 수정함으로 쉽게 변경할수 있습니다.

이클립스  Navigator를 통해 프로젝트 디렉토리를 보면 많은 환경변수 파일들 볼수 있는데요...

 

org.eclipse.wst.common.project.facet.core.xml 파일도 함께 존재합을 확인 수 있를 것입니다. 고민하지 마시고 열어서 수정해줍니다. 아니면 삭제해도 좋습니다.

 

 

파일을 열어서 수정합니다.

 

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="jst.web"/>
  <fixed facet="wst.jsdt.web"/>
  <fixed facet="java"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
  <installed facet="jst.web" version="2.4"/>
  <installed facet="java" version="1.4"/>
</faceted-project>

 

이클립스의 버그라고 봐도 될듯 합니다.

 

 

 

 

 



« PREV : 1 : ··· : 12 : 13 : 14 : 15 : 16 : 17 : 18 : ··· : 61 : NEXT »