Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

(시리즈 글이 8개 있습니다.)
개발 환경 구성: 371. Azure Web App 확장 예제 - Simple WebSite Extension
; https://www.sysnet.pe.kr/2/0/11505

개발 환경 구성: 379. Azure Web App 확장 예제 제작
; https://www.sysnet.pe.kr/2/0/11540

개발 환경 구성: 380. Azure Web App 확장 배포 방법
; https://www.sysnet.pe.kr/2/0/11541

개발 환경 구성: 408. C# - REST API를 이용해 Azure Kudu 서비스 이용 - 파일 처리
; https://www.sysnet.pe.kr/2/0/11730

개발 환경 구성: 409. C# - REST API를 이용해 Azure Kudu 서비스 이용 - 웹 앱 확장 처리
; https://www.sysnet.pe.kr/2/0/11731

개발 환경 구성: 578. Azure - Java Web App Service를 위한 Site Extension 제작 방법
; https://www.sysnet.pe.kr/2/0/12711

개발 환경 구성: 579. Azure - 리눅스 호스팅의 Site Extension 제작 방법
; https://www.sysnet.pe.kr/2/0/12712

개발 환경 구성: 605. Azure App Service - Kudu SSH 환경에서 FTP를 이용한 파일 전송
; https://www.sysnet.pe.kr/2/0/12855




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

비밀번호

댓글 작성자
 




... 76  [77]  78  79  80  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
12011정성태8/27/201926177사물인터넷: 57. C# - Rapsberry Pi Zero W와 PC 간 Bluetooth 통신 예제 코드파일 다운로드1
12010정성태8/27/201919096VS.NET IDE: 138. VSIX - DTE.ItemOperations.NewFile 메서드에서 템플릿 이름을 다국어로 설정하는 방법
12009정성태8/26/201919936.NET Framework: 858. C#/Windows - Clipboard(Ctrl+C, Ctrl+V)가 동작하지 않는다면?파일 다운로드1
12008정성태8/26/201919615.NET Framework: 857. UWP 앱에서 SQL Server 데이터베이스 연결 방법
12007정성태8/24/201918237.NET Framework: 856. .NET Framework 버전을 올렸을 때 오류가 발생할 수 있는 상황
12006정성태8/23/201921690디버깅 기술: 129. guidgen - Encountered an improper argument. 오류 해결 방법 (및 windbg 분석) [1]
12005정성태8/13/201919306.NET Framework: 855. 닷넷 (및 VM 계열 언어) 코드의 성능 측정 시 주의할 점 [2]파일 다운로드1
12004정성태8/12/201927588.NET Framework: 854. C# - 32feet.NET을 이용한 PC 간 Bluetooth 통신 예제 코드 [14]
12003정성태8/12/201919697오류 유형: 564. Visual C++ 컴파일 오류 - fatal error C1090: PDB API call failed, error code '3'
12002정성태8/12/201919066.NET Framework: 853. Excel Sheet를 WinForm에서 사용하는 방법 - 두 번째 이야기 [5]
12001정성태8/10/201924274.NET Framework: 852. WPF/WinForm에서 UWP의 기능을 이용해 Bluetooth 기기와 Pairing하는 방법 [1]
12000정성태8/9/201923696.NET Framework: 851. WinForm/WPF에서 Console 창을 띄워 출력하는 방법파일 다운로드1
11999정성태8/1/201917984오류 유형: 563. C# - .NET Core 2.0 이하의 Unix Domain Socket 사용 시 System.IndexOutOfRangeException 오류
11998정성태7/30/201920012오류 유형: 562. .NET Remoting에서 서비스 호출 시 SYN_SENT로 남는 현상파일 다운로드1
11997정성태7/30/201920363.NET Framework: 850. C# - Excel(을 비롯해 Office 제품군) COM 객체를 제어 후 Excel.exe 프로세스가 남아 있는 문제 [2]파일 다운로드1
11996정성태7/25/201923354.NET Framework: 849. C# - Socket의 TIME_WAIT 상태를 없애는 방법파일 다운로드1
11995정성태7/23/201927045.NET Framework: 848. C# - smtp.daum.net 서비스(Implicit SSL)를 이용해 메일 보내는 방법 [2]
11994정성태7/22/201921780개발 환경 구성: 454. Azure 가상 머신(VM)에서 SMTP 메일 전송하는 방법파일 다운로드1
11993정성태7/22/201916459오류 유형: 561. Dism.exe 수행 시 "Error: 2 - The system cannot find the file specified." 오류 발생
11992정성태7/22/201918555오류 유형: 560. 서비스 관리자 실행 시 "Windows was unable to open service control manager database on [...]. Error 5: Access is denied." 오류 발생
11991정성태7/18/201915616디버깅 기술: 128. windbg - x64 환경에서 닷넷 예외가 발생한 경우 인자를 확인할 수 없었던 사례
11990정성태7/18/201917872오류 유형: 559. Settings / Update & Security 화면 진입 시 프로그램 종료
11989정성태7/18/201916718Windows: 162. Windows Server 2019 빌드 17763부터 Alt + F4 입력시 곧바로 로그아웃하는 현상
11988정성태7/18/201919243개발 환경 구성: 453. 마이크로소프트가 지정한 모든 Root 인증서를 설치하는 방법
11987정성태7/17/201925128오류 유형: 558. 윈도우 - KMODE_EXCEPTION_NOT_HANDLED 블루스크린(BSOD) 문제 [1]
11986정성태7/17/201916868오류 유형: 557. 드라이브 문자를 할당하지 않은 파티션을 탐색기에서 드라이브 문자와 함께 보여주는 문제
... 76  [77]  78  79  80  81  82  83  84  85  86  87  88  89  90  ...