เนื่องจากได้ให้ทางทีม Operation ลอง Refresh คู่มือติดตั้ง Jenkin เดิมที่ทำไว้ 5-6 ปีก่อนบน Windows 10 ดูว่า ถ้าลองขยับ Tech ใหม่ๆจะมีปัญหาไหม ที่นี้เจอปัญหาในส่วนของ Tomcat ครับ
ลองดู Exception
org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class [jenkins.JenkinsHttpSessionListener] java.lang.NoClassDefFoundError: javax/servlet/http/HttpSessionListener at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2431) at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:864) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1187) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:540) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:521) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:151) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4589) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5126) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1399) at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:704) at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:223) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:689) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:770) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:211) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:668) at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:348) at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:53) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:682) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:332) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1568) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpSessionListener at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1187)
คู่มือเดิม + Version ปัจจุบัน
- Windows 10
- Oracle JDK 8
- Tomcat 9.0 (เดิมที่ 8.0)
- Jenkins LTS Version ล่าสุด
ค้นหาข้อมูล
- เจอเคสคล้ายๆกันอยู่ [JENKINS-64548] deploying Jenkins 2.263.1 to Tomcat 10. beta fails. - Jenkins Jira
สรุป
- ตอนติดตั้ง Jenkins ไม่ต้องใช้ Tomcat แล้ว ขอแค่สร้าง Folder สำหรับให้ Jenkins มันทำงาน เช่น C:\JenkinsWin\
- นำไฟล์ jenkins.war วางไว้ใน JenkinsWin
- จากนั้นเปิด Command Line เข้าไปที่ Path JenkinsWin แล้ว Run คำสั่ง
java -jar jenkins.war
สำหรับใครที่อยากให้ผูกเป็น Windows Service มีขั้นตอน ดังนี้
- Setup Jenkins ให้เรียบร้อยก่อน
- เข้าด้วย user admin และไป Manage Jenkins และหาเมนู Install as Windows Service (มันจะขึ้นกรณีที่เราไม่ได้ทำ Service ไว้ จากนั้นตามขั้นตอนเลย install > restart
- ถ้าเข้ามาดูในหน้าจอ Control Panel > Administrative Tools > Services มีตัว Jenkins ขึ้นมาเป็น Service แล้วครับ
Ref: Jenkins : Installing Jenkins as a Windows service
Note
- จาก Blog นี้มีหลายคนสอบถามกัน ถ้าเป็นเครื่อง Windows ทำไมถึงไม่ Deploy Docker บน WSL2 นั้นเพราะ เครื่อง Build นี้ ถูกเตรียมไว้ Build Desktop Application (.NET Framework) ที่ Run บน Windows ครับ รวมถึงเตรียมไว้สำหรับสร้าง Windows Container Image ครับ //ถ้าลูกค้าเป็น Windows Server 2019 แล้วอยาก Containerized ต้องมาทางนี้ครับ T__T
- ส่วนถ้าเป็น Web App ปกติจะใช้เครื่อง Linux Build ครับ
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.