я должен написать класс, который принимает сокет-соединение и передать его в класс Handler с помощью Springне может быть приведен к ThreadPoolTaskExecutor
Мой Слушатель Класс
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));
}
}
}
Мой класс Handler является
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>
, когда я прохожу номер порта, то я получил эту ошибку
**
Исключение в потоке «главный» java.lang.ClassCastException: org.hovel.server.TCPHandler не может быть приведен к org.springframework .scheduling.concurrent.ThreadPoolTaskExecutor на org.hovel.server.Listener.main (Listener.java:27) *
**
Пожалуйста, помогите мне