이슈

Tomcat에서는 로그 파일이 생성되어 application 로그와 Jeus Container 로그가 분리되지만

JEUS에서는 로그가 분리되지 않고 JeusSever.log 에 같이 쌓이는 현상

원인

Log4j 로그는 JEUS 설정에서 관리하는 로그가 아님

WEB-INF/Log4j2.xml 파일 확인 결과

<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${sys:FILE_LOG_PATTERN}"/>
</Console>

XML 설정 내 Console 호출 부분에서 SYSTEM_OUT이 consoleAppender 형태로 호출되고 있음

ConsoleAppender vs FileAppender

출력 위치 콘솔 (System.out, System.err) 지정한 파일로 출력
목적 개발/테스트용 (터미널에서 바로 보기) 운영/배포용 (로그 파일 기록)
특징 서버 stdout 리다이렉트 설정에 영향 받음 (JEUS에서는 JeusServer.log로 빨려 들어갈 수 있음) 독립된 파일로 안전하게 로그 기록 가능
사용 용도 개발 중 디버깅, 로컬 테스트 운영 서버, 대용량 로그 관리

Tomcat 과 Jeus의 로그 구조 차이

Tomcat : Catalina.out 파일로 system out/err만 저장

Jeus : JeusServer.log에 system out/err + JEUS 내부 로그 같이 저장

 

해결

ConsoleAppender 설정이 아닌 FileAppender 설정으로 변경 가이드

<Appenders>
    <File name="FileLog" fileName="/home/was/logs/application.log">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
    </File>

ISSUE

 

java.net.UnknownHostException: jeus: 이름 혹은 서비스를 알 수 없습니다


CAUSE 

 

/etc/hosts 권한 문제 > /etc/hosts 파일 권한 확인

cat /etc/hosts

cd /etc/hosts

ls -al | grep hosts

Resolution

root Login

other 계정 read 권한 부여

chmod 644 /etc/hosts

<<__Exception__>>
java.io.EOFException
	at java.io.DataInputStream.readFully(DataInputStream.java:197)
	at jeus.servlet.engine.WJPV1Registration.readRegstrationReply(WJPV1Registration.java:111)
	at jeus.servlet.engine.WebtoBConnectionManager.registerToWebtoB(WebtoBConnectionManager.java:239)
	at jeus.servlet.engine.WebtoBConnectionManager.createConnection(WebtoBConnectionManager.java:93)
	at jeus.servlet.connection.WebtoBConnector.run(WebtoBConnector.java:177)
	at java.lang.Thread.run(Thread.java:750)
<<__!Exception__>>
[2023.01.12 10:02:23][1] [cyedu1-180] [WEB-3456] Executing the servlet action failed.
<<__Exception__>>
javax.servlet.ServletException: java.lang.reflect.InvocationTargetException
	at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:905)
	at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:834)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:786)
	at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:80)
	at jeus.servlet.engine.RequestDispatcherImpl.processCommonRequestDispatcher(RequestDispatcherImpl.java:475)
	at jeus.servlet.engine.RequestDispatcherImpl.include(RequestDispatcherImpl.java:572)
	at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:160)
	at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:304)
	at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286)
	at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:683)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:786)
	at jeus.servlet.engine.ServletWrapper.executeServlet(ServletWrapper.java:170)
	at jeus.servlet.engine.RequestDispatcherImpl.processCommonRequestDispatcher(RequestDispatcherImpl.java:475)
	at jeus.servlet.engine.RequestDispatcherImpl.include(RequestDispatcherImpl.java:572)
	at org.apache.taglibs.standard.tag.common.core.ImportSupport.acquireString(ImportSupport.java:314)
	at org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag(ImportSupport.java:171)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:786)
	at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:80)
	at jeus.servlet.engine.RequestDispatcherImpl.processCommonRequestDispatcher(RequestDispatcherImpl.java:475)
	at jeus.servlet.engine.RequestDispatcherImpl.include(RequestDispatcherImpl.java:572)
	at org.apache.taglibs.standard.tag.common.core.ImportSupport.acquireString(ImportSupport.java:314)
	at org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag(ImportSupport.java:171)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:786)
	at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:80)
	at jeus.servlet.engine.RequestDispatcherImpl.processCommonRequestDispatcher(RequestDispatcherImpl.java:475)
	at jeus.servlet.engine.RequestDispatcherImpl.doForward(RequestDispatcherImpl.java:392)
	at jeus.servlet.engine.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:369)
	at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241)
	at org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222)
	at org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
	at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:106)
	at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:670)
	at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:690)
	at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644)
	at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627)
	at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321)
	at org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:112)
	at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:304)
	at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286)
	at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:683)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:786)
	at jeus.servlet.engine.ServletWrapper.executeServlet(ServletWrapper.java:170)
	at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:112)
	at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:86)
	at egovframework.com.sec.security.filter.EgovSpringSecurityLoginFilter.doFilter(EgovSpringSecurityLoginFilter.java:336)
	at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:98)
	at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:86)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:155)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)
	at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:98)
	at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:86)
	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:98)
	at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:86)
	at egovframework.com.cmm.filter.HTMLTagFilter.doFilter(HTMLTagFilter.java:35)
	at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:98)
	at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:86)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at jeus.servlet.filter.FilterChainImpl.internalDoFilter(FilterChainImpl.java:98)
	at jeus.servlet.filter.FilterChainImpl.doFilter(FilterChainImpl.java:86)
	at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:145)
	at jeus.servlet.engine.RequestProcessor.run(RequestProcessor.java:235)
	at jeus.util.pool.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:1299)
	at jeus.util.pool.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:1343)
	at jeus.servlet.engine.WebThreadPoolExecutor$WebRequestWorker.run(WebThreadPoolExecutor.java:340)
	at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.reflect.InvocationTargetException
	at jeus.servlet.jsp.InstanceManagerImpl.injectToInstance(InstanceManagerImpl.java:68)
	at jeus.servlet.jsp.InstanceManagerImpl.newInstance(InstanceManagerImpl.java:43)
	... 118 more

 

 

java.io.EOFException

at java.io.DataInputStream.readFully(DataInputStream.java:197) at jeus.servlet.engine.WJPV1Registration.readRegstrationReply(WJPV1Registration.java:111) at jeus.servlet.engine.WebtoBConnectionManager.registerToWebtoB(WebtoBConnectionManager.java:239) at jeus.servlet.engine.WebtoBConnectionManager.createConnection(WebtoBConnectionManager.java:93) at jeus.servlet.connection.WebtoBConnector.run(WebtoBConnector.java:177)


원인

JEUS WEBMain.xml<webtob-listener>- <thread-pool>의 min/max 값과

Webtob http.m *SERVER절의 MinProc/MaxProc값이 다를 때 발생

 

(http.m의 설정값이 더 크거나 같아야 함)

 

WEBMain.xml
http.m


 

JEUS WEBMain 또는 Domain.xml file 에서 Session 설정 적용해도

정상적으로 적용되지 않는 경우가 발생한다.

 

application에서 session timeout 을 설정하지 않았는지 확인해야 한다. 


세션 우선 순위 : application setting > server setting

 

web.xml > webcommon.xml > WEBMain.xml


[1순위]

/WEB-INF/web.xml

<web-app>

<session-config>

<session-timeout>60</session-timeout> [단위 : 분]

</session-config>

</web-app>


[2순위]

/WEB-INF/web.xml

${JEUS_HOME}/config/컨테이너명/엔진명/webcommon.xml

<web-app>

<session-config>

<session-timeout>30</session-timeout> [단위 : 분]

</session-config>


 

[3순위]

SERVLET_ENGINE/WEBMain.xml

 

<web-container>

<context-group>

...

<session-config>

<timeout>30</timeout> [단위 : 분]

<shared>false</shared>

</session-config>

...

</context-group>

</web-container>

 

session-cookie = true

세션을 전달하는 세션 트래킹의 방법으로 쿠키를 사용할 때 세션을 쿠키로 전달할지를 설정한다.


 

 

 

WAR 파일로 배포할 경우

 

JEUS에서 context path를 명시적으로 설정하지 않을 경우, 기본적으로 웹 애플리케이션의 WAR 파일 이름이 context path로 사용된다.

 

ex) example.war 파일로 배포된 애플리케이션의 경우, context path는 /example 이 된다.

 

ROOT.war라는 이름으로 애플리케이션을 배포하면, 그 애플리케이션은 root context path, 즉 /에서 서비스되는데, 이럴 경우 웹 브라우저에 서버의 도메인 이름만 입력해도 해당 애플리케이션에 접근할 수 있게 된다.

 

 

app2.war 구성

  •   app2.war
    • app 
      • test2.jsp
1. 배포된 app2.war 의 파일 명인  'app2' 가 context path로 설정됨
2. app2.war 파일 내 app 디렉토리가 있고 하위에 test2.jsp가 있으므로 하위 경로까지 URL에 모두 입력하여 호출

디렉토리로 배포할 경우

 

.war 파일이 아닌 디렉토리로 애플리케이션을 배포할 때, 그 디렉토리의 이름이 기본적으로 context path로 사용된다.

 

ROOT라는 이름의 디렉토리를 사용하여 애플리케이션을 배포하면, 그 애플리케이션은 루트 경로 즉, /에서 접근 가능하게 된다.

ACCESS / DENY 설정

Client에서 접속을 시도할 때, 특정 IP address 나 newtork/netmask 들을 기준으로 요청에 대한 ACCESS/DENY를 설정할 수 있다.

    • 요청 허용과 제한이 적용되는 순서 설정
    • ACCESS 절은 DIRECTORY/URI/EXT/TCPGW 절에 적용될 수 있으며, 각각에서 정의한 리소스를 허용 또는 제어한다. 

예시

ACCESS 절 추가

#WebtoB
vi http.m

#ACESS절 추가
*ACCESS
#특정 IP만 DENY, 그 외 모든 IP 허용
access1  Order = "allow, deny", Allow = "all"
access2  Order = "deny, allow", Deny = "[IP 1],[IP 2]",Allow = "[IP 1],[", 
access3  Order = "allow, deny", Allow = "211.1.1.0/255.255.255.0"
access4  Order = "deny, allow", Deny = "211.1.1.30"
access5  Order = "allow, deny", Allow = "all",Deny = "211.1.1.30"

ACCESS 절은 Order 옵션의 순서에 따라 설정이 다르게 적용된다.

allow, deny : Method> Allow> AllowIf> Deny> DenyIf 순서로 match 한다.

deny, allow : Method > Deny > DenyIf > Allow > AllowIf 순서로 match 한다.

vi http.m

*ACCESS
access1  Order = "allow, deny", Allow = "all"
access2  Order = "allow, deny", Allow = "211.1.1.10, 211.1.1.20"
access3  Order = "allow, deny", Allow = "211.1.1.0/255.255.255.0"
access4  Order = "deny, allow", Deny = "211.1.1.30"
access5  Order = "allow, deny", Allow = "all",Deny = "211.1.1.30"

 

필수 옵션 ACCESS name = <string> Access 절의 이름을 임의로 정할 수 있다.
선택 옵션 Method = <literal> 적용 할 HTTP 메소드를 설정한다.
MethodException = <literal> 제외 할 HTTP 메소드를 설정한다.  
Order = <literal>    
Default - "Deny,Allow" Allow, AllowIf, Deny, DenyIf, Method가 적용되는 순서를 설정한다 (하단 표 참조)  
Allow = <literal> 요청이 허용되는 IP 주소나 network/netmask들을 설정  
Deny = <literal> 요청이 거절되는 IP 주소나 network/netmask들을 설정  

 


GOTOEXT = Y 설정이 들어가 있는 경우

GOTOEXT = Y 설정이 있는 경우, JEUS를 거치지 않고 바로 WebtoB로 요청을 처리하기 때문에 URI로 요청이 가지 않는다.

이럴 경우, 요청을 받는 해당 vhost에 rewrite 설정을 통하여 특정 IP에 대한 요청을 처리해야 한다.

  • URLRewrite
  • URLRewriteConfig
vi http.m

v_test          DOCROOT="/home/webtob5/webtob/docs/",
                HOSTNAME = "mail.test.com",
                HOSTALIAS = "192.168.40.137",
                PORT = "80",
                ServiceOrder = "uri,ext",
                ERRORDOCUMENT = "403,404,503",
                METHOD = "GET, POST, -HEAD, -OPTIONS",
                #Headers = "gzip,cors_all",
                #Headers ="security,X-XSS,X-Content,strict,X-Download",
                **URLRewrite = Y,
                URLRewriteConfig = "$WEBTOBDIR/config/rewrite.conf",**
                LOGGING = "acc_test",
                ERRORLOG = "err_test"
vi rewrite.conf

RewriteCond %{REQUEST_URI} !error ## 무한 redirect 방지
RewriteCond %{REMOTE_ADDR} ^139.xx.xx.132$ ##특정 ip 
RewriteRule . <https://xxx.go.kr/err/error.html> ##호출 url 페이지

즉, IP가 139.xx.xx.132로 들어오는 요청에 대해 https://xxx.go.kr/err/error.html errorpage로 redirect 시키겠다는 의미이다.

WebtoB는 Apache와 동일한 형식으로 로그를 기록하고 있으며 포맷도 동일하게 사용한다.


WebtoB 로그 구분

- syslog

  WebtoB Engine에서 남기는 로그로 WebtoB의 이상 유무를 체크하여 로그로 남긴다.

  특이한 이상이 없는 한 많은 로그를 남기지 않는다.

  일별로 생성되며 기본위치는 $WEBTOBDIR/log/syslog 이다.

 

- errorlog

  클라이언트가 웹으로 접속하여 호출 시 에러가 발생하는 모든 uri 정보를 남긴다.

  일별로 생성되며 기본위치는  $WEBTOBDIR/log/errorlog 이다.

 

- accesslog

  클라이언트가 웹으로 접속 시 호출하는 모든 요청정보를 남긴다.

  요청이 많으면 파일크기가 상당히 커지므로 로그 관리에서 access log 관리가 가장 중요하다.

  일별로 생성되며 기본위치는  $WEBTOBDIR/log/accesslog이다.

 


WebtoB 로그 포맷

webtob는 기본 로그 포맷으로 3가지 alias를 제공하고 있다.

  • Default
  • COMMON
  • COMBINED

보안 취약점 조치를 위해 WebtoB Access log의 포맷 변경이 필요할 경우 DEFAULT -> COMBINED로 변경하면 된다.

 

 

Default : [요청 IP] [요청처리를 완료한 시간] [HTTP Request의 Request line 전체] [HTTP Status Code] [헤더를 제외한 응답의 Byte] [요청 처리하는데 소요된 시간 ms]

 


USERLOGFORMAT 설정

WebtoB5 에서는 공통으로 사용될 로그 포맷을 설정할 수 있도록 *USERLOGFORMAT 절을 제공하고 있다.

기존 VHOST가 많을 경우에 동일한 포맷을 설정하고자 할 때 해당 *USERLOGFORMAT 절에 사용자가 로그 포맷을 설정하고 *LOGGING 절에서 해당 설정 포맷을 사용할 수 있도록 하였다.

 

*LOGGING
log1        Format = "format1", FileName = "C:/TmaxSoft/WebtoB4.1.9.1/log/access.log",
            Option = "sync"
            ...
*USERLOGFORMAT
format1     Format = "%h %l %u %t \"%r\" %s %b" 



JEUS 설치 JAVA 버전과 jeus.properties 내 JAVA 버전이 동일하지만

/etc/hosts에 설정된 IP 또는 hostname이 서버 IP 또는 Hostname 과 불일치 할 경우

 


java.lang.ExceptionInInitializerError
        at jeus.tool.console.console.jeus.JeusJMXConsoleContext.onCreate(JeusJMXConsoleContext.java:261)
        at jeus.tool.console.console.jeus.JeusJMXConsole.<init>(JeusJMXConsole.java:69)
        at jeus.tool.console.console.ConsoleMain.main(ConsoleMain.java:8)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at jeus.server.Bootstrapper.callMainMethod(Bootstrapper.java:590)
        at jeus.server.Bootstrapper.callMain(Bootstrapper.java:597)
        at jeus.server.Bootstrapper.main(Bootstrapper.java:145)
        at jeus.tool.console.ConsoleBootstrapper.main(ConsoleBootstrapper.java:11)
Caused by: java.lang.NullPointerException
        at jeus.util.net.NetworkConstants.<clinit>(NetworkConstants.java:88)
        ... 11 more

 



jeus.properties 내 JAVA버전이 JEUS 설치 버전보다 낮을 경우

 

Exception in thread "main" java.lang.UnsupportedClassVersionError: jeus/server/Bootstrapper : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:808)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:443)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:65)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:349)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:348)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:430)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:326)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

 

 




jeus.properties 내 JAVA버전이 JEUS 설치 버전보다 높을 경우

 

-Djava.endorsed.dirs=/home/jeus8_1/jeus8_5/lib/endorsed is not supported. Endorsed standards and standalone APIs
in modular form will be supported via the concept of upgradeable modules.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

 

+ Recent posts