Elastic Job項目問題解決記錄

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/luowangcan/article/details/80731564

一,前言

前段時間在用Elastic job實現定時任務,由於需要放在在consul下面實現遠程服務調用,引起了一系列問題,在這裏記錄一下。這裏的springboot版本是1.5.10

二, 問題記錄

  • 項目啓動錯誤
java.lang.SecurityException: class "javax.annotation.ManagedBean"'s signer information does not match signer information of other classes in the same package
  • 這是jar包衝突引起的,移除項目模塊中的spring-boot-starter依賴,父模塊已經有配置了,同時添加spring-boot-starter-web依賴,這時報錯異常如下:
Caused by: java.lang.NullPointerException: null
    at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer.getPort(JettyEmbeddedServletContainer.java:236)
  • 這時報的錯誤就匪夷所思了,spring-boot-starter-web默認的內嵌服務器是Tomcat,爲什麼會報jetty的配置爲空的錯誤。查看啓動日誌,發現運行的不是Tomcat服務器,而是jetty
2018-06-12 10:50:55.983 aceMarsoftCoreJob [main] INFO  o.s.b.c.e.j.JettyEmbeddedServletContainerFactory - Server initialized with port: 5280
2018-06-12 10:50:55.984 aceMarsoftCoreJob [main] INFO  org.eclipse.jetty.server.Server - jetty-8.1.19.v20160209
2018-06-12 10:50:56.075 aceMarsoftCoreJob [main] INFO  application - Initializing Spring embedded WebApplicationContext
  • 查看項目依賴,發現了一個jetty的依賴配置:
+- com.dangdang:elastic-job-lite-lifecycle:jar:2.1.5:compile
[INFO] |  \- com.dangdang:elastic-job-common-restful:jar:2.1.5:compile
[INFO] |     +- com.sun.jersey:jersey-client:jar:1.19.1:compile
[INFO] |     \- org.eclipse.jetty.aggregate:jetty-all-server:jar:8.1.19.v20160209:compile
[INFO] |        +- org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016:compile
[INFO] |        +- org.eclipse.jetty.orbit:javax.security.auth.message:jar:1.0.0.v201108011116:compile
[INFO] |        +- org.eclipse.jetty.orbit:javax.mail.glassfish:jar:1.4.1.v201005082020:compile
[INFO] |        +- org.eclipse.jetty.orbit:javax.activation:jar:1.1.0.v201105071233:compile
[INFO] |        \- org.eclipse.jetty.orbit:javax.annotation:jar:1.1.0.v201108011116:compile
[INFO] +- org.springframework.cloud:spring-cloud-starter-consul-discovery:jar:1.3.2.RELEASE:compile
  • 原因是elastic job的restful包中用了jetty做內嵌服務器,移除這裏的jetty依賴
<dependency>
            <groupId>com.dangdang</groupId>
            <artifactId>elastic-job-lite-lifecycle</artifactId>
            <version>${elastic.job.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.jetty.aggregate</groupId>
                    <artifactId>jetty-all-server</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
  • 事情還是沒有結束,當項目放在生產上時,啓動日誌停在下面的日誌就不動了
log4j:WARN No appenders could be found for logger (com.alibaba.druid.pool.DruidDataSource).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
  • 還是查看maven依賴樹,發現存在了多餘的log4j的依賴
+- org.apache.curator:curator-client:jar:2.11.1:compile
[INFO] |  +- org.apache.zookeeper:zookeeper:jar:3.4.8:compile
[INFO] |  |  +- log4j:log4j:jar:1.2.16:compile
[INFO] |  |  +- jline:jline:jar:0.9.94:compile
[INFO] |  |  \- io.netty:netty:jar:3.7.0.Final:compile
  • 移除該配置
<dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
            <version>2.11.1</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
  • 再次啓動還是報錯
Caused by: org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for ....
  • 進入zoopkeeper控制檯,連接該節點,發現該節點設置了令牌認證,而目前公司zoopkeeper的身份認證方式是world,可以肯定節點出了問題,設置了digest令牌,重新聲明作業名稱再發布即解決問題
getAcl ace_marsoft_job
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章