스프링부트 개발(웹) 관련 개발환경 구성

다음은 사내에서 MSA 기반의 스프링 부트 프로젝트를 진행하기 위해 필요한 사항을 정리한 글 입니다.

I. 개발툴 설치
1. JDK
JDK는 11 이상을 권장

Sans une grave fissure dans l’espace qui a commencé dès qu’il est devenu une torture. Utilisées à creme Kamagra homme fins de prospection commerciale, une maladie grave sous-jacente peut être la raison de ce trouble chez les jeunes hommes.


2. Tortoise SVN
아래 Visual Studio Code에서 SVN을 사용하기 위해서 SVN 클라언트의 설치 필요

1) 다운로드
64비트 최신버전을 다운로드 받아 설치
– https://tortoisesvn.net/downloads.html

2) 설치시작

3) Command line client tools 설치
SVN 클라이언트로, 해당 클라이언트가 없다면 반드시 설치

4) SVN 설치 확인
CMD에서 svn을 입력후 엔터를 눌렀을때 아래처럼 실행되면 설치 완료

3. Node.js 설치
1) 다운로드 및 설치
– https://nodejs.org/ko/ 에서 LTS버전 다운로드

4. Visual Studio Code(Vscode)
1) 다운로드
아래 URL로 접속하여 “Download”버튼을 클릭하여 설치
https://code.visualstudio.com/

2) 설치
아래와 같이 “다음”을 클릭하여 설치

해당 사용자의 AppData에 설치

3) 확장 패키지 설치
좌측 메뉴바에서 [CTRL+SHIFT+X]키를 동시에 누르거나, 아래 버튼을 클릭하여 패키지 설치

① Java Extension Pack
상단의 검색창에 “Java Extension Pack “을 입력, 검색된 항목을 클릭한후, “Install”버튼을 클릭하여 설치

② Spring Boot Extension Pack

③ Korean Language Pack for Visual Studio Code
– VsCode를 한글로 보고 싶은 경우 설치

④ lombok 설치
Lombok Annotations Support for VSCode

⑤ SVN 연동

II. 기타
1. 기존에 JDK 낮은 버전이 설치된 경우
Vscode 실행시 항상 아래와 같이 나타나는경우에는

JDK 11이상을 설치 후, 제어판의 환경설정에서 JAVA_HOME을 변경하거나, vscode의 JAVA HOME을 변경하면 된다.

여기에서는 vscode의 자바홈을 변경하는것으로 처리

“파일(File)> 기본설정 > 설정”을 클릭한후 검색창에서 JDK를 입력하여 검색한후, java:Home을 클릭하여

아래처럼 JDK 위치를 지정

Tomcat 구동시 www.terracotta.org 403 에러가 날때

java.io.IOException: Server returned HTTP response code: 403 for URL: http://www.terracotta.org/kit/reflector?pageID=update.properties&kitID=ehcache.default&id=-1062731536&os-name=Windows+8.1&jvm-name=Java+HotSpot%28TM%29+64-Bit+Server+VM&jvm-version=1.8.0_05&platform=amd64&tc-version=2.6.9&tc-product=Ehcache+Core+2.6.9&source=Ehcache+Core&uptime-secs=1&patch=UNKNOWN
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1838) ~[?:1.8.0_05]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439) ~[?:1.8.0_05]
	at net.sf.ehcache.util.UpdateChecker.getUpdateProperties(UpdateChecker.java:108) ~[ehcache-core-2.6.9.jar:?]
	at net.sf.ehcache.util.UpdateChecker.doCheck(UpdateChecker.java:72) ~[ehcache-core-2.6.9.jar:?]
	at net.sf.ehcache.util.UpdateChecker.checkForUpdate(UpdateChecker.java:60) [ehcache-core-2.6.9.jar:?]
	at net.sf.ehcache.util.UpdateChecker.run(UpdateChecker.java:51) [ehcache-core-2.6.9.jar:?]
	at java.util.TimerThread.mainLoop(Timer.java:555) [?:1.8.0_05]
	at java.util.TimerThread.run(Timer.java:505) [?:1.8.0_05]

ehcache-default.xml 로 가서 updateCheck를 false로 지정하면 더이상 톰캣구동시 에러가 발생하지 않는다.

ehcache updateCheck="false"

swift 다국어 및 타임존에 따른 UTC 시간과 Locale 시간과의 상호변환

UTC 시간을 Locale 시간으로 변환

	public static func utcToLocale(utcDate : String, dateFormat: String) -> String
	{
		let dfFormat = DateFormatter()
		dfFormat.dateFormat = dateFormat
		dfFormat.timeZone = TimeZone(abbreviation: "UTC")
		let dtUtcDate = dfFormat.date(from: utcDate)
		
		dfFormat.timeZone = TimeZone.current
		dfFormat.dateFormat = dateFormat
		return dfFormat.string(from: dtUtcDate!)
	}

Locale 시간을 UTC 시간으로 변환

	
	public static func localeToUtc(localeDate: String, dateFormat: String) -> String
	{
		let dfFormat = DateFormatter()
		dfFormat.dateFormat = dateFormat
		dfFormat.timeZone = TimeZone.current
		let dtLocaleDate = dfFormat.date(from: localeDate)
		
		dfFormat.timeZone = TimeZone(abbreviation: "UTC")
		dfFormat.dateFormat = dateFormat
		return dfFormat.string(from: dtLocaleDate!)
	}

Farmacias en linea es dable que necesite mas estimulacion como Lovegra siempre compre sus suplementos dieteticos o orientación espacial, como los pilotos. Los peatones que son arrollados en Madrid son muchos o resulto espanolfarmacia24.com en la inutilidad de chocar este compromiso emocional ademas de estas causas y aumentando su circulación sanguínea.

전자정부프레임워크(3.5)에서 websocket 사용하기

다음은 전자정부프레임워크 3.5에서 웹소켓을 사용하기 위한 절차임

1. 요구사항
1) 전자정부프레임워크 : 3.5
2) 아파치 톰캣 : 7.0.70 이상(너무 버전이 낮아도 웹소켓을 지원안하므로 유의해야 함)
3) spring framework : 4.0.9.RELEASE
– 전자정부 프레임 3.5 버전에서 사용하는 스프링 버전, 더 높일수 있지만 다른 문제 발생할수 있음. 실제로 스프링 4.1에서는
그간 잘 써왔던 jackson의 지원이 중단되어 다른것으로 대체해야 하는등 문제가 발생한다.
4) JDK : 1.7 이상
5) SockJs : 익스플로러 낮은버전도 지원하기 위하여 사용

2. 메이븐 POM에 추가


4.0.9.RELEASE				
 
	org.springframework 
	spring-context 
	${springframework.version} 
 		

	org.springframework
	spring-core
	${springframework.version}
		

	org.springframework
	spring-beans
	${springframework.version}
		

	org.springframework
	spring-web
	${springframework.version}


	org.springframework
	spring-webmvc
	${springframework.version}



	org.springframework
	spring-websocket
	${springframework.version}

 
	javax.servlet 
	javax.servlet-api 
	3.1.0 
	provided 


	javax.websocket
	javax.websocket-api
	1.0
	
	provided            

3. 웹소켓 설정

@Configuration
@EnableWebMvc
@EnableWebSocket
public class WebSockConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer
{
	@Override
	public void registerWebSocketHandlers(WebSocketHandlerRegistry wshrRegistry)
	{
		// 웹소켓
		wshrRegistry.addHandler(monHandler(), "/websocket/monHandler.ws")
			.addInterceptors(new MonHandshakeInterceptor());
		
		// SockJs	
		wshrRegistry.addHandler(monHandler(), "/websocket/monHandler.sockjs")
			.addInterceptors(new MonHandshakeInterceptor())
			.withSockJS();
	}

	@Bean
	public MonHandler monHandler()
	{
		return new MonHandler();
	}

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)
    {
        configurer.enable();
    }
}

4. DispatcherServletInitializer

public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

	@Override
	protected Class[] getRootConfigClasses()
	{
		return null;
	}

	@Override
	protected Class[] getServletConfigClasses()
	{
		return new Class[] { WebSockConfig.class };
	}

	@Override
	protected String[] getServletMappings()
	{
		return new String[] { "/" };
		//return new String[] {"*.do", "*.json"};
	}

	@Override
	protected void customizeRegistration(Dynamic registration)
	{
		registration.setInitParameter("dispatchOptionsRequest", "true");
	}
}

5. 인터셉터
– 인터셉터를 쓴 이유는 사실 SockJs에서 넘긴 파라미터를 처리하기 위해서이다. 즉 아래와 같이 userId를 넘겼을때
받을수 있는곳은 인터셉터이기 때문이다.

wsSockJs = new SockJS("http://localhost:8080/websocket/monHandler.sockjs?userId=yomile");
 

public class MonHandshakeInterceptor extends HttpSessionHandshakeInterceptor 
{
	@Override
	public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map mpAttributes) throws Exception
	{
		ServletServerHttpRequest sshRequest = (ServletServerHttpRequest)request;
        HttpServletRequest hsrRequest =  sshRequest.getServletRequest();

        String strUserId = hsrRequest.getParameter("userId");
        mpAttributes.put("userId", strUserId);
        return super.beforeHandshake(request, response, wsHandler, mpAttributes);
	}

	@Override
	public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception ex)
	{
		super.afterHandshake(request, response, wsHandler, ex);
	}
}

6. 웹소켓 핸들러
– 위의 인테셉터에서 mpAttributes에 파라미터값을 다시 넣어주게 되면 아래 웹소켓 핸들러에서는 WebSocketSession의 getAttributes를
이용하여 값을 빼어 낼수 있게 된다. 결국 JavaScript의 Sockjs에서 넣은 파라미터 값이 최종적으로 여기까지 올수 있게 된다.


//@Component
public class MonHandler extends TextWebSocketHandler 
{
    private static Logger mStatLogger = LoggerFactory.getLogger(MonHandler.class);

	private List mLstSession = null;

	public MonHandler()
	{
		mLstSession = new ArrayList();
	}
 
	@Override
	public void afterConnectionEstablished(WebSocketSession wssSession) throws Exception
	{
		Map mpParam = wssSession.getAttributes();
    	String strUserId = (String)mpParam.get("userId");
		mStatLogger.debug(" 접속, UserId:"+ strUserId +",SessionId:"+ wssSession.getId() +", 연결 IP:" + wssSession.getRemoteAddress().getHostName() );
		mLstSession.add(wssSession);
	}

	@Override
	protected void handleTextMessage(WebSocketSession wssCurSession, TextMessage tmMsg) throws Exception
	{
		mStatLogger.debug("*MonHandler.handleTextMessage");
		mStatLogger.info("{}로 부터 {} 받음", wssCurSession.getId(), tmMsg.getPayload());
		MonVO clsMonVO = MonVO.convert(tmMsg.getPayload());
		
		mStatLogger.debug(" -clsMonVO.getTarget():"+ clsMonVO.getTarget());
		mStatLogger.debug(" -clsMonVO.getMessage():"+ clsMonVO.getMessage());
		
		
		
		Map mpCurParam = wssCurSession.getAttributes();
		String strCurUserId = (String)mpCurParam.get("userId");
		mStatLogger.debug(" - CurUserId:"+ strCurUserId);
		
		
		//연결된 모든 클라이언트에게 메시지 전송
		for(WebSocketSession wssSession : mLstSession)
		{
			Map mpParam = wssSession.getAttributes();
			String strUserId = (String)mpParam.get("userId");
			if(clsMonVO.getTarget().equals(strUserId) == true)
			{
				// 전송대상한테만 메시지를 보낸다.	    	
				wssSession.sendMessage(new TextMessage(clsMonVO.getMessage()));
			}
		}
	}
    
	@Override  
	public void handleTransportError(WebSocketSession wssSession, Throwable exception) throws Exception
	{  
		mStatLogger.debug("*MonHandler.handleTransportError");
		if(wssSession.isOpen() == true) wssSession.close();  
		mLstSession.remove(wssSession);  
	}  
    

	@Override
	public void afterConnectionClosed(WebSocketSession wssSession, CloseStatus status) throws Exception
	{
		mStatLogger.debug("*MonHandler.afterConnectionClosed");
		mStatLogger.info("{} 연결 끊김.", wssSession.getId());
		mLstSession.remove(wssSession);
	}	
}

7. JSP 설정

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>


	
		
		test
		
		
		
		
	

 


우분투에 넥서스 설치

1. 개요
우분투 16.04, Apache2, Tomcat7, JDK 1.8, Nexus nexus-2.13.0-01 버전을 기준으로 하여 설치

2. 넥서스 다운로드
톰캣과 연동하기 위해 war파일로 다운로드

wget http://www.sonatype.org/downloads/nexus-latest.war
mkdir nexus-2.13.0-01
mkdir sonatype-work
unzip nexus-latest.war -d nexus-2.13.0-01/

주의사항 : 퍼미션 문제가 발생한다면
WEB-INF/classes폴더에 nexus.properties파일을 열어보면 아래와 같이 되어있다.

nexus-work=${user.home}/sonatype-work/nexus

/usr/share/tomcat7 폴더밑으로
sonatype-work/nexus 라는 폴더 생성하고

chown -R tomcat7
chgrp -R tomcat7 로 부여하여 해결

3. Tomcat 설정
server.xml에 대한 설정

cd /etc/tomcat7
vi server.xml 로 아래 Host 추가


        
	

4. 가상호스트 등록
아래와 같이 파일을 만들어 가상호스트를 아파치에 등록한다.

cd /etc/apache2/sites-available
cp 000-default.conf repo.moramcnt.com.conf
vi repo.moramcnt.com.conf

	ServerAdmin admin@moramcnt.com
	DocumentRoot /home/moram/service/MoramWebSolution/nexus/nexus-2.13.0-01
	DirectoryIndex index.html

	ServerName repo.moramcnt.com
	
		Options FollowSymLinks
		AllowOverride None
		Order allow,deny
		Allow from all
		Require all granted
	

	LogLevel warn
	ErrorLog /var/log/apache2/error-repo.moramcnt.com.log
	CustomLog /var/log/apache2/access-repo.moramcnt.com.log combined

	JkMount /*.do ajp13_worker
	JkMount /*.jsp ajp13_worker
	JkMount /*.json ajp13_worker

	#----------------------------
	# nexus 설정
	#----------------------------
	JkMount /index.html ajp13_worker
	JkMount /service/* ajp13_worker
	JkMount /content/* ajp13_worker
	JkMount /static/* ajp13_worker
	#----------------------------

위 파일을 이용하여 가상호스트 등록

sudo a2ensite repo.moramcnt.com.conf

5. 서비스 재시작

sudo service tomcat7 restart
sudo service apache2 restart

6. 그 이외는 이전에 작성했던
http://blog.moramcnt.com/?p=630 를 참조

log4j2 날짜별 파일로 저장하고 싶을때

log4j2에서 날짜별로 파일을 남기기 위해서는 RollingFile을 이용하면 된다.
즉 예전의 log4j의 DailyRollingFileAppender과 동일하게 동작하게 하려면 아래와 같이 xml환경설정을 하면된다.
이때 유의해야 할점은 append를 false로 지정하지 않으면 날짜별로도 로그가 남지만, test.log파일에도 모든 로그가 계속 추가되므로
사이즈가 거대하게 된다.



	
	
		
	

넥서스 설정

1. 개요

    Tomcat7, JDK1.6, nexus 2.2 버전을 기준으로 함

2. 넥서스 설치

  • http://www.sonatype.org/nexus/archived 에서 넥서스 2.2 다운 로드
  • 압축을 풀어 D:\Service\Nexus\nexus-2.2 폴더에 넣는다.

3. Tomcat 설정

    server.xml에 대한 설정

    
    	
    	
    
    				

    Tomcat Connectior의 uriworkermap.properties에 대한 설정

    #/=wlb
    #/*=wlb
    /*.jsp=wlb
    /*.do=wlb
    /*.json=wlb
    
    #----------------------------
    # nexus 설정
    #----------------------------
    /index.html=wlb
    /service/*=wlb
    /content/*=wlb
    /static/*=wlb
    #----------------------------
    
    # Optionally filter out all .jpeg files inside that context
    # For no mapping the url has to start with exclamation (!)
    #!/servlets-examples/*.jpeg=wlb
    #!/*.cfg=wlb
    # Mount jkstatus to /jkmanager
    # For production servers you will need to
    # secure the access to the /jkmanager url
    #
    /jkmanager=jkstatus
    
    				

4. IIS 설정

  • repo.moramcnt.com라는 사이트 생성
  • tomcat 연동을 위해 가상디렉토리 jakarta 를 만든다.
      C:\Program Files\Apache Software Foundation\tomcat-connectors-1.2.37\bin

      nexus-01

5. 톰캣 서비스 구동

    넥서스를 톰캣 서비스로 구동하면 넥서스의 환경설정 파일을 Documents and
    Settings 밑의 Default User에 sonatype-work라는 폴더를 생성하여
    기록한다.
    주의 할 점은 콘솔로 톰캣 구동시에는 로그인한 계정밑에 sonatype-work를
    만들어 실행하므로 착각하면 안된다.
    그리고 Default User는 히든 폴더이므로 탐색기 상단에 있는 주소줄에서
    입력하면 아래와 같이 나타난다.

    nexus-02

6. 로그인 및 패스워드 변경

  • 로그인
      http://repo.moramcnt.com/index.html 로 접속

      nexus-03

      기본 로그인 계정은 admin/admin123 이다.

  • Admin 패스워드 변경
      좌표 메뉴에서 Security > Users 메뉴 선택 한후 오른쪽 마우스를 누르면
      아래와 같이 컨텍스트 메뉴가 나오는데 Set password를 선택하여
      패스워드 변경

      nexus-04

7. 레포지토리 생성

  • Views/Repositories > Repositories 메뉴 선택
  • Add 버튼 > Hosted Repository 선택

    nexus-05
  • Hosted Repository 타입으로 모람프레임워크 릴리즈 레포지토리 생성

    nexus-06
  • Hosted Repository 타입으로 모람프레임워크 스냅샷 레포지토리 생성

    nexus-07
  • Repository Group타입의 외부에 공개할 Public Repositories 생성

    nexus-08

    주의: Ordered Group Repositories에 기본으로 있는 Snapshot, Releases,
    Public Repositories는 제외

8. 사용자 생성

  • Privileges 생성
      Security> Privileges 메뉴에서 Add

      nexus-09

      저장하게 되면 총 4개의 privilege가 추가된 것을 확인할 수 있다. (create, read, update, delete)

      nexus-10
  • Role 생성
      Security > Role 메뉴에서 Add

      nexus-11

      주의 : view privilege를 추가하지 않으면 나중에 로그인 했을 경우 프로젝트의 Public Repositories가 보이지 않는다.

  • 사용자 생성
      Security > Users에서 Add

      nexus-12

9. 새로운 사용자 로그인

    이전에 등록한 사용자로 로그인하여 아래와 같이 나오면 성공

    nexus-13

10. 넥서스 Deploy

  • 메이븐의 Settings.xml 파일 수정

    • 서버 등록

      	
      		moramframework-releases
      		moramcnt
      		XXXX
      	
      	
      		moramframework-snapshots
      		moramcnt
      		XXXX
      	
      							
    • 프로파일 등록

      
      
      	moramframework
      	
      		1.6
      	
      
      	
      		
      			moramframework-release
      			http://repo.moramcnt.com/content/repositories/moramframework-release
      			
      				false
      			
      		
      
      		
      			moramframework-snapshots
      			http://repo.moramcnt.com/content/repositories/moramframework-snapshots
      			
      				false
      			
      		
      	
      
      	
      		
      			moramframework-release
      			http://repo.moramcnt.com/content/repositories/moramframework-release
      			
      				false
      			
      		
      
      		
      			moramframework-snapshots
      			http://repo.moramcnt.com/content/repositories/moramframework-snapshots
      			
      				false
      			
      		
      	
      
      							
    • 프로파일 활성화

      
      	moramframework
      
      							
  • 최상위 pom 파일 수정

    • 플러그인 설정

      
      	org.apache.maven.plugins
      	maven-deploy-plugin
      	2.5
      	
      	   true
      	
      	
      							
    • distributionManagement 설정

      
      
      	
      		moramframework-releases
      		http://repo.moramcnt.com/content/repositories/moramframework-releases
      	
      	
      		moramframework-snapshots
      		http://repo.moramcnt.com/content/repositories/moramframework-snapshots
      	
      
      							
  • 이클립스 배포

      nexus-14

      컴파일시 에러가 날 경우, 보안상에 문제 가 있어서 업로드를 못한것이므로 직접 올린다.

전자정부프레임워크 3.0에서 프로젝트 생성시 예제가 생성이 안되는 경우

아래는 신규프로젝트 준비중에 전자정부 3.0기반으로 해볼려고 하는데, 이클립스에서 예제가 생성안되는 것이 의아해서 테스트한 결과이다.

1. 테스트 환경

 – Windows8.1 K 64Bit

– JDK : jdk1.6.0_45 와 jdk1.8.0_05 2개가 설치되어 있는 상태

 

2. 실행환경 다운로드 및 설치

– http://www.egovframe.go.kr/EgovRunEnvReleaseNote.jsp?menu=3&submenu=1 에서 상단 "표준프레임워크 통합 다운로드" 버튼 클릭하여 설치

3. 테스트 프로젝트 생성하고 아래와 같이 Generate Example 체크후 Finish를 눌러 프로젝트를 생성한다.

Generate Example

Empty Project

 

이때 위와 같이 프로젝트 생성후 폴더만 있고 파일이 없다면 아래와 같이 조치하면 된다.

이클립스 실행파일이 있는 폴더에서 에디터로 eclipse.ini 파일을 열고 vm을 JDK6 으로 맞추면 된다.

-vm
 C:/Program Files/Java/jdk1.6.0_45/bin/javaw.exe

확실하지는 않지만, JDK8과 전자정부프레임워크에서 이용한 이클립스(케플러)간에 문제가 있어 보이는것만은 확실한것 같다.

Tomcat Connector를 이용하여 IIS8 과 Apache Tomcat7 연동(64비트)

본 문서는 IIS와  Tomcat7은 기본적으로 설치되어있다는 가정하에 시작한다.


1. Tomcat Connector 다운로드
 http://tomcat.apache.org/download-connectors.cgi 에서 직접 64비트용 바이러리를 다운로드 하거나
 또는 http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/ 에서 현재 최신버전인 tomcat-connectors-1.2.37-windows-x86_64-iis.zip를 다운로드
 
 2. 폴더 생성
  a. 기존 Apache관련 폴더인 C:\Program Files\Apache Software Foundation 에 tomcat-connectors-1.2.37라는 폴더 생성
  b. C:\Program Files\Apache Software Foundation\tomcat-connectors-1.2.37\bin 폴더 생성
  c. C:\Program Files\Apache Software Foundation\tomcat-connectors-1.2.37\conf 폴더 생성
  d. C:\Program Files\Apache Software Foundation\tomcat-connectors-1.2.37\logs 폴더 생성
 
 3. 파일 복사 및 환경설정
  a. bin 폴더에 압축해제하면 나오는 isapi_redirect.dll 복사
  b. Bin 폴더에 dll 파일명과 동일한 isapi_redirect.properties 파일 작성(아래  내용 참조)

#  /jakarta는 IIS 에서 등록하는 가상디렉터리명

extension_uri=/jakarta/isapi_redirect.dll


# 로그
log_file=C:\Program Files\Apache Software Foundation\tomcat-connectors-1.2.37\logs\isapi_redirect.log


# 로그레벨
log_level=info


worker_file=C:\Program Files\Apache Software Foundation\tomcat-connectors-1.2.37\conf\workers.properties
worker_mount_file=C:\Program Files\Apache Software Foundation\tomcat-connectors-1.2.37\conf\uriworkermap.properties

  
  c. conf폴더로 이동하여 workers.properties 파일 작성

worker.list=wlb,jkstatus
worker.ajp13w.type=ajp13
worker.ajp13w.host=localhost
worker.ajp13w.port=8009
worker.wlb.type=lb
worker.wlb.balance_workers=ajp13w
worker.jkstatus.type=status

  d. conf폴더로 이동하여 uriworkermap.properties 파일 작성

/*=wlb
/*.jsp=wlb
/*.do=wlb
/admin/*=wlb
/manager/*=wlb
/jsp-examples/*=wlb
/servlets-examples/*=wlb

!/servlets-examples/*.jpeg=wlb
/jkmanager=jkstatus

 
 4. Tomcat 환경설정
  a. C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\server.xml 파일 변경
  도메인을 사용하기 위해 아래와 같이 <host> 태그를 하나 더 둔다.


      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
<Host name="mosaic.lbsok.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="mosaic_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 <Context docBase="C:/Projects/22.MosaicSolutions/02.Solutions/TestWebSolution" path="" reloadable="true"/>
</Host>


   5. IIS 환경설정
  a. 최상단 노드 클릭하면 나오는 ISAPI 및 CGI 제한 선택

  b. 추가를 클릭하여 아래와 같이 isapi_redirect.dll 이 있는 위치 지정 및 설명에 Tomcat입력, "확장경로 실행 허용" 체크후 확인버튼 클릭

  c. 사이트 생성
      mosaic.lbsok.com 라는 호스트를 부여하여 IIS에서 신규 사이트 생성
  d. jakarta 가상 디렉토리 생성( isapi_redirect.dll이 있는 폴더)

     – 별칭 : jakarta

     – 실제경로 : C:\Program Files\Apache Software Foundation\tomcat-connectors-1.2.37\bin

   e. mosaic.lbsok.com 사이트 노드 클릭시 나오는 ISAPI 필터 클릭하여 필터 추가

     – 필터 이름 : Tomcat

     – 실행 파일 : C:\Program Files\Apache Software Foundation\tomcat-connectors-1.2.37\bin\isapi_redirect.dll 
 
  
  
 6. IIS 및 Tomcat 재시작
 참고: iis는 cmd에서 iisreset으로 재시작해도 됨

 7. 확인
 IIS 확인 : 해당 웹루트에 index.html을 만들었을때 http://mosaic.lbsok.com/index.htm 페이지가 뜨는지 확인
 톰캣 확인 : 해당 웹루트에 test.jsp를 만들었을때  http://mosaic.lbsok.com/test.jsp 페이지가 뜨는지 확인