public class TcpErrorHandler {
public void onException(){
System.out.println("Exception!!! ");
}
}
有什么捕捉机制吗?
下面是我的bean配置中的一个片段:
<!-- Client side -->
<int:gateway id="gw"
service-interface="hu.gmxdev.climaxreplica.service.SimpleGateway"
default-request-channel="outputchannel" />
<int-ip:tcp-connection-factory id="client"
type="client" host="localhost" port="10001" single-use="true"
so-timeout="2000" deserializer="climaxDeserializer"
interceptor-factory-chain="customInterceptorFactoryChain"/>
<int:channel id="outputchannel" />
<int-ip:tcp-outbound-gateway id="outGateway"
request-channel="outputchannel" reply-channel="replychannel"
connection-factory="client" request-timeout="2000" reply-timeout="2000" />
<int:service-activator input-channel="replychannel"
method="reply" ref="echoService" id="serviceactivator">
</int:service-activator>
<int:channel id="replychannel"></int:channel>
<bean id="customInterceptorFactoryChain"
class="org.springframework.integration.ip.tcp.connection.TcpConnectionInterceptorFactoryChain">
<property name="interceptors">
<array>
<bean class="hu.gmxdev.climaxreplica.service.CustomInterceptorFactory"/>
</array>
</property>
</bean>
<!-- Error channel -->
<int-ip:tcp-connection-event-inbound-channel-adapter id="event"
error-channel="errorChannel"
event-types="org.springframework.integration.ip.tcp.connection.TcpConnectionExceptionEvent" />
<int:channel id="errorChannel"></int:channel>
<int:service-activator ref="tcpErrorHandler" method="onException"
input-channel="errorChannel">
</int:service-activator>
下面是我的错误处理程序:
public class TcpErrorHandler {
@Autowired
private ApplicationContext appContext;
public void onException(TcpConnectionExceptionEvent event){
MainService mainService = appContext.getBean(MainService.class);
mainService.setSuccess(3);
System.out.println("Exception!!! ");
System.out.println(event.getCause().getMessage());
}
}
public class CustomInterceptor extends TcpConnectionInterceptorSupport{
public CustomInterceptor () {
System.out.println("catched_constructor1");
}
public CustomInterceptor (ApplicationEventPublisher applicationEventPublisher) {
super(applicationEventPublisher);
System.out.println("catched_constructor");
}
@Override
public boolean onMessage(Message<?> message) {
System.out.println("catched_message");
return super.onMessage(message);
}
@Override
public void send(Message<?> message){
System.out.println("catched_send");
MessageHeaders mh = message.getHeaders();
try {
super.send(message);
}
catch (Exception e) {
System.out.println("catched_send_exception");
}
}
@Override
public void close() {
String id = getConnectionId();
System.out.println("catched_closed" + id);
super.close();
}
}
success = gateway.send("fooooooo");
您可以定义提供给入站适配器的错误通道。下面是一个例子:
<int:channel id="error-channel"></int:channel>
<int-ws:inbound-gateway id="gateway" error-channel="error-channel"
request-channel="in" marshaller="marshaller" unmarshaller="marshaller"
reply-channel="out" />
现在,向下游抛出的所有异常都将被这个错误通道捕获。然后,您可以将此错误通道作为输入定义一个服务激活器:
<int:service-activator input-channel="error-channel"
ref="exceptionHandler" method="handleError" output-channel="outError"></int:service-activator>
并且这个激活器引用定义错误处理逻辑的bean。
问题内容: 在春季集成中,我有一个简单的tcp客户管道:一个网关,一个tcp出站网关,一个服务激活器以及一个错误通道。在tcp-connection- factory中有一个简单的拦截器。错误通道非常简单,我使用此过滤器实现了tcp-connection-event-inbound-channel- adapter: org.springframework.integration.ip.tcp.c
然后我把它用作: 但是最后一行代码没有捕获任何异常,我的代码给出运行时异常并停止。你能解释为什么会发生这种情况,如果可能的话,如何修复它吗?
问题内容: 据我所知,netty通过重写方法exceptionCaught()处理异常。但是我想要的是一个可以处理所有异常的处理程序。因此,管道应类似于: InboundExceptionHandler- inboundHandler1-inboundHandler2-outboundHandler1-outboundHandler2-OutboundExceptionHandler 这意味着我应
我在用滑翔4。当URL返回404时,获取FileNotFoundException。我尝试使用RequestListener捕捉异常。但它并没有缓存这个异常。 记录如下: 2019-03-20 17:48:07.134 32233-32233/com。zyta。zflikz带滑翔:装载失败https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAA
问题内容: 我正在尝试编写一个使用PyQt5在系统托盘中运行的应用程序。该代码有时会引发异常,我需要能够捕获它们。 我希望当应用程序中发生异常时,会退出主事件循环,因此像这样捕获它应该起作用: 在下面的示例中,当我按下“提高”按钮时,我仅看到回溯,但从未看到打印过的内容。 有2个类似的问题,但是那里的答案并没有满足我的需要: 抓住PyQt中的任何异常:OP希望 监视 异常,不退出偶数循环。 防止P
我是在Spring中加入的,并且尝试使用AOP方面来处理我的程序中所有可能的异常。它工作得很好,除了请求para解析器异常,因为我的方面不能捕捉到它。案例如下:这是我的方面代码 然后是控制器部分,它的包路径精确地包含在方面切入点中。 //---------------------------------------------------------------------------------