在 Spring Boot Service 中使用 TinyRadius 无法启动 tomcat

问题描述

我正在尝试使用 TinyRadius 库创建一个 Spring Boot 服务。消费者将通过用户名和密码调用此服务,我需要连接到半径服务器进行身份验证。我正在使用 IntelliJ 进行开发。我在 gradle 文件中包含了 TinyRadius gradle 依赖项

编译(组:'org.tinyradius',名称:'tinyradius',版本:'1.1.0')

但是当我在 IntelliJ 中启动我的应用程序时,它会引发以下错误删除上述依赖项并注释掉 IntelliJ 中的 Radius 服务器代码 Tomcat 启动,但一旦我有 tinyradius 依赖项,它就无法启动。

[main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat 使用端口初始化:8081 (http) [ main] o.apache.catalina.core.StandardService : 启动服务 [Tomcat] [ main] org.apache.catalina.core.StandardEngine : 启动 Servlet 引擎:[Apache Tomcat/9.0.38] [主要] org.apache.catalina.core.ContainerBase :子容器失败 启动时

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException:无法启动组件 [NonLoginAuthenticator[StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]] 在 java.util.concurrent.FutureTask.report(FutureTask.java:122) 在 java.util.concurrent.FutureTask.get(FutureTask.java:192) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:843) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 在 org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1384) 在 org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1374) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) 在 java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) 在 org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 在 org.apache.catalina.core.StandardService.startInternal(StandardService.java:421) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 在 org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 在 org.apache.catalina.startup.Tomcat.start(Tomcat.java:486) 在 org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:123) 在 org.springframework.boot.web.embedded.tomcat.TomcatWebServer.(TomcatWebServer.java:104) 在 org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:437) 在 org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:191) 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:178) 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:158) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545) 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) 在 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:315) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) 引起:org.apache.catalina.LifecycleException:无法启动 成分 [NonLoginAuthenticator[StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]] 在 org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198) 在 org.apache.catalina.core.StandardPipeline.startInternal(StandardPipeline.java:176) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5056) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 在 org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1384) 在 org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1374) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) 在 java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) ...省略了30个常见帧 引起:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String; 在 org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1342) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ...省略40个常用帧

这是我目前在控制器中的示例代码。我只是想看看服务器是否启动然后可以继续。任何有关如何在 spring boot webservice 中实现此功能的帮助表示赞赏

import org.tinyradius.packet.AccessRequest;
import org.tinyradius.packet.RadiusPacket;
import org.tinyradius.util.RadiusClient;

public void connect() throws Exception{

        RadiusClient rc = new RadiusClient("radiusserver","secretcode");
        rc.setAuthPort(9999);
        rc.setRetryCount(4);
        rc.setSocketTimeout(30000);

        AccessRequest ar = new AccessRequest("name","pwd");
        RadiusPacket response = rc.authenticate(ar);
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)