关于#cas#的问题,如何解决?(标签-ar|关键词-Proxy)

cas客户端创建Filter出现空指针异常,请问有谁知道如何解决吗
代码如下:

@Bean
    public Cas20ProxyReceivingTicketValidationFilter getCas20ProxyReceivingTicketValidationFilter() {
        Cas20ProxyReceivingTicketValidationFilter casFilter = new Cas20ProxyReceivingTicketValidationFilter();
        casFilter.setService("http://192.168.10.117:8222");
        casFilter.setProxyReceptorUrl("/proxy/receptor");
        Cas20ProxyTicketValidator ticketValidator = new Cas20ProxyTicketValidator(casProperties.getCasServerUrl());
        ticketValidator.setAcceptAnyProxy(true);
        ticketValidator.setProxyCallbackUrl("/proxy/receptor");
        casFilter.setTicketValidator(ticketValidator);
        return casFilter;
    }

错误内容如下:

18:00:44.813 [restartedMain] ERROR o.a.c.c.C.[.[.[/] - [log,175] - Exception starting filter [getCas20ProxyReceivingTicketValidationFilter]
java.lang.NullPointerException: null
    at org.jasig.cas.client.util.ReflectUtils.newInstance(ReflectUtils.java:78)
    at org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter.createNewTicketValidator(Cas20ProxyReceivingTicketValidationFilter.java:144)
    at org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter.getTicketValidator(Cas20ProxyReceivingTicketValidationFilter.java:178)
    at org.jasig.cas.client.validation.AbstractTicketValidationFilter.initInternal(AbstractTicketValidationFilter.java:141)
    at org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter.initInternal(Cas20ProxyReceivingTicketValidationFilter.java:123)
    at org.jasig.cas.client.util.AbstractCasFilter.init(AbstractCasFilter.java:74)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:272)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:106)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4613)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5256)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:927)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Tomcat.start(Tomcat.java:486)
    at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:123)

根据异常信息,报错原因是在使用ReflectUtilsnewInstance()方法时出现了空指针异常。

可能原因有以下几种:

  1. ReflectUtils类没有被成功加载:检查是否在项目依赖中正确引入了org.jasig.cas.client.util包。

  2. Cas20ProxyReceivingTicketValidationFilter类没有被成功加载:检查是否在项目依赖中正确引入了org.jasig.cas.client.validation包,同时也要确保与该类有关的Java文件存在并且能够编译。

  3. casProperties对象为空:这个对象应该是通过Spring的依赖注入机制获得的,在本段代码中并未给出该对象的创建方法。检查是否正确配置了Spring的依赖注入机制,并在程序启动时成功创建了casProperties对象。

  4. Cas20ProxyReceivingTicketValidationFilter对象的构造函数中使用了其他对象但未初始化,导致NPE异常:请仔细检查代码中所有有关的对象调用,确保它们都已经初始化并且不为空。

综上所述,排查方法可以从这四个方面入手,逐个排查,找出问题所在。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    抱歉,根据提供的参考资料和问题描述,无法确定问题发生的根本原因。建议提供更详细的错误信息和相关代码,以便更好地帮助解决问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^