gpt4 book ai didi

java - 无法转换为 ThreadPoolTask​​Executor

转载 作者:行者123 更新时间:2023-12-01 11:18:01 25 4
gpt4 key购买 nike

我必须编写一个接受套接字连接的类,并使用 Spring 将其传递给 Handler 类

我的监听器类是

public class Listener {

static Logger log = Logger.getLogger(Listener.class.getName());

public static void main(String args[]) throws IOException {
int port = 0;
if (args.length < 1) {
System.out.println("Usage: java -jar hovel.jar listenPortNumber");
System.exit(1);
} else {
port = Integer.parseInt(args[0]);
}
ApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml");
ThreadPoolTaskExecutor taskExecutor = (ThreadPoolTaskExecutor) context.getBean("TCPHandler");

ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Listening on TCP port " + port);
for (;;) {
Socket sock = serverSocket.accept();
taskExecutor.execute(new TCPHandler(sock));

}
}

}

我的处理程序类是

public class TCPHandler implements Runnable {
private Socket moduleSocket;



public TCPHandler(Socket sock) {
moduleSocket = sock;
}

public void run() {

}

}

我的 Bean.xml 是

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<bean id="TCPHandler" class="org.hovel.server.TCPHandler">
<constructor-arg type="java.net.Socket">
<null />
</constructor-arg>
</bean>
<bean id="taskExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="WaitForTasksToCompleteOnShutdown" value="true" />
</bean>
</beans>

当我传递端口号时,我收到此错误
**

Exception in thread "main" java.lang.ClassCastException: org.hovel.server.TCPHandler cannot be cast to org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor at org.hovel.server.Listener.main(Listener.java:27)*

**

请帮助我

最佳答案

您正在请求 TCPHandler bean 在这里:

context.getBean("TCPHandler")

不是 ThreadPoolTaskExecutor ,所以我不知道你为什么会这样期望。如果您想检索执行程序,则应该获取 那个 bean,它的 ID 为 taskExecutor .

请注意,目前您实际上并未使用 TCPHandler当您构建 TCPHandler 时,以任何有用的方式使用 bean明确地在您的 main 中方法。

关于java - 无法转换为 ThreadPoolTask​​Executor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31560859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com