Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

Azure - Java Web App Service를 위한 Site Extension 제작 방법

Java를 대상으로 해도 역시 방법은 닷넷의 것과 유사합니다.

Azure Web App 확장 예제 제작
; https://www.sysnet.pe.kr/2/0/11540

그런데, 자알못이라 Extension용의 웹 사이트를 Java로 만들 수가 없군요. ^^; 어차피 .NET Core도 web.config의 AspNetCoreModule을 이용해 w3wp의 reverse proxy와 연동하는 식이므로,

사용자 정의 웹 서버(EXE)를 IIS에서 호스팅하는 방법 - HttpPlatformHandler (Reverse Proxy)
; https://www.sysnet.pe.kr/2/0/11434

저 방식을 따르면 될 것입니다. 하지만 닷넷을 할 줄 안다면, Java의 초기 로딩 속도를 고려했을 때 그냥 .NET Core로 만들어 배포하는 것이 더 좋은 선택입니다.




일단, Site Extension의 웹 사이트 영역은 .NET Core로도 만들 수 있으므로 넘어가고, 이제 남은 것은 Tomcat 등의 호스팅 환경에 원하는 값을 넘겨야 하는 상황이 있다면 어떤 식으로 처리하냐는 것입니다.

사실 이 부분도 .NET Web App에서 했던 것과 다르지 않습니다. 가령, Tomcat catalina의 경우 JAVA_OPTS를 환경 변수로 전달받아 처리하게 되는데요.

// catalina.bat (catalina.sh)

...[생략]...
set "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
...[생략]...

만약 Web App 확장에서 특정 값을 저 환경 변수에 전달하고 싶다면 applicationHost.xdt 파일로 처리할 수 있습니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <system.webServer>
        <runtime xdt:Transform="InsertIfMissing" >
            <environmentVariables xdt:Transform="InsertIfMissing">
                
                <add name="JAVA_OPTS" value="-Dmy.config=%home%\SiteExtensions\MyAppExtension\conf\test.conf" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing"/>
            
            </environmentVariables>
        </runtime>
    </system.webServer>

    <system.applicationHost>
        <sites>
            <site name="%XDT_SCMSITENAME%" xdt:Locator="Match(name)">
                <application path="/MyAppExtension" xdt:Locator="Match(path)" xdt:Transform="Remove" />
                <application path="/MyAppExtension" applicationPool="%XDT_APPPOOLNAME%" xdt:Transform="Insert">
                    <virtualDirectory path="/" physicalPath="%XDT_EXTENSIONPATH%" />
                </application>
            </site>
        </sites>
    </system.applicationHost>
</configuration>

또는, Azure Portal에서 해당 Web App Service의 Configuration에서 "JAVA_OPTS" 환경 변수를 전달해도 무방합니다. 결국, 제목은 "Java Web App Service"라고 되어 있지만, 사실상 기존 "Azure Web App 확장 예제 제작" 글에 썼던 내용의 답습에 불과합니다. ^^

참고로, 위의 applicationHost.xdt 파일 내용을 보면 xdt:Transform의 조건을 InsertIfMissing으로 했는데요. 엄밀히 이 조건이라면 Azure Portal의 Configuration에서 동일한 환경 변수(위의 예에서는 JAVA_OPTS)를 전달하면 설정이 안 되어야 하지만, 실제로 해보면 설정이 잘 됩니다. 두 개의 설정을 같은 급으로 보는 건지... ^^; 옵션의 차이가 애매하군요.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 10/28/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 16  17  18  19  20  21  22  [23]  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
13048정성태5/6/20226506오류 유형: 810. "ASUS TUF GAMING B550M-PLUS (WI-FI)" 모델에서 블루투스 장치가 인식이 안 되는 문제
13047정성태5/6/20226499오류 유형: 809. Speech Recognition could not start
13046정성태5/5/20226788.NET Framework: 2002. C# XingAPI - ACF 파일을 이용한 퀀트 종목 찾기(t1857)
13045정성태5/5/20226848.NET Framework: 2001. C# XingAPI - 주식 종목에 따른 PBR, PER, ROE 구하는 방법(t3341 예제)
13044정성태5/4/20226305오류 유형: 808. error : clang++ exited with code 127
13043정성태5/3/20225941오류 유형: 807. C# - 닷넷 응용 프로그램에서 Informix DB 사용 시 오류 메시지 정리
13042정성태5/3/20226334.NET Framework: 2000. C# - 닷넷 응용 프로그램에서 Informix DB 사용 방법파일 다운로드1
13041정성태4/28/20226596개발 환경 구성: 642. Informix 데이터베이스 docker 환경 구성
13040정성태4/27/20227132VC++: 156. 비주얼 스튜디오 - Linux C/C++ 프로젝트에서 openssl 링크하는 방법
13039정성태4/27/20227900.NET Framework: 1999. C# - Playwright를 이용한 간단한 브라우저 제어 실습
13038정성태4/26/20225815오류 유형: 806. twine 실행 시 ConfigParser.ParsingError: File contains parsing errors: /root/.pypirc
13037정성태4/25/20226137.NET Framework: 1998. Azure Functions를 사용한 간단한 실습
13036정성태4/24/20226856.NET Framework: 1997. C# - nano 시간을 가져오는 방법 [2]
13035정성태4/22/20227428Windows: 204. Windows 10부터 바뀐 QueryPerformanceFrequency, QueryPerformanceCounter
13034정성태4/21/20226835.NET Framework: 1996. C# XingAPI - 주식 종목에 따른 PBR, PER, ROE, ROA 구하는 방법(t3320, t8430 예제)파일 다운로드1
13033정성태4/18/20227426.NET Framework: 1195. C# - Thread.Yield와 Thread.Sleep(0)의 차이점(?)
13032정성태4/17/20227149오류 유형: 805. Github의 50MB 파일 크기 제한 - warning: GH001: Large files detected. You may want to try Git Large File Storage
13031정성태4/15/20226693.NET Framework: 1194. C# - IdealProcessor와 ProcessorAffinity의 차이점
13030정성태4/15/20226362오류 유형: 804. 정규 표현식 오류 - Quantifier {x,y} following nothing.
13029정성태4/14/20226772Windows: 203. iisreset 후에도 이전에 설정한 전역 환경 변수가 w3wp.exe에 적용되는 문제
13028정성태4/13/20226692.NET Framework: 1193. (appsettings.json처럼) web.config의 Debug/Release에 따른 설정 적용
13027정성태4/12/20226986.NET Framework: 1192. C# - 환경 변수의 변화를 알리는 WM_SETTINGCHANGE Win32 메시지 사용법파일 다운로드1
13026정성태4/11/20228470.NET Framework: 1191. C 언어로 작성된 FFmpeg Examples의 C# 포팅 전체 소스 코드 [3]
13025정성태4/11/20227833.NET Framework: 1190. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 vaapi_encode.c, vaapi_transcode.c 예제 포팅
13024정성태4/7/20226365.NET Framework: 1189. C# - 런타임 환경에 따라 달라진 AppDomain.GetCurrentThreadId 메서드
13023정성태4/6/20226658.NET Framework: 1188. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 transcoding.c 예제 포팅 [3]
... 16  17  18  19  20  21  22  [23]  24  25  26  27  28  29  30  ...