@ -183,6 +183,8 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@@ -183,6 +183,8 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
privateintregisteredWithDestination=0;
privatevolatilebooleanrecovering=false;
privateRunnablestopCallback;
privateObjectcurrentRecoveryMarker=newObject();
@ -758,6 +760,9 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@@ -758,6 +760,9 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
super.establishSharedConnection();
}
catch(Exceptionex){
if(exinstanceofJMSException){
invokeExceptionListener((JMSException)ex);
}
logger.debug("Could not establish shared JMS Connection - "+
"leaving it up to asynchronous invokers to establish a Connection as soon as possible",ex);
}
@ -796,7 +801,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@@ -796,7 +801,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@ -837,7 +842,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@@ -837,7 +842,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@ -846,8 +851,14 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@@ -846,8 +851,14 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
*@see#refreshDestination()
*/
protectedvoidrecoverAfterListenerSetupFailure(){
refreshConnectionUntilSuccessful();
refreshDestination();
this.recovering=true;
try{
refreshConnectionUntilSuccessful();
refreshDestination();
}
finally{
this.recovering=false;
}
}
/**
@ -856,9 +867,11 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@@ -856,9 +867,11 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@ -874,16 +887,19 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@@ -874,16 +887,19 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
break;
}
catch(Exceptionex){
if(exinstanceofJMSException){
invokeExceptionListener((JMSException)ex);
}
StringBuildermsg=newStringBuilder();
msg.append("Could not refresh JMS Connection for destination '");
msg.append(getDestinationDescription()).append("' - retrying in ");
@ -925,6 +941,17 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@@ -925,6 +941,17 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
@ -294,7 +295,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@@ -294,7 +295,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
@ -434,7 +433,7 @@ public class MockServletContext implements ServletContext {
@@ -434,7 +433,7 @@ public class MockServletContext implements ServletContext {
@ -210,7 +209,7 @@ public class MockPortletContext implements PortletContext {
@@ -210,7 +209,7 @@ public class MockPortletContext implements PortletContext {
@ -332,7 +331,7 @@ public class MockPortletRequest implements PortletRequest {
@@ -332,7 +331,7 @@ public class MockPortletRequest implements PortletRequest {
@ -51,9 +51,9 @@ public class MockPortletSession implements PortletSession {
@@ -51,9 +51,9 @@ public class MockPortletSession implements PortletSession {
@ -92,15 +92,15 @@ public class MockPortletSession implements PortletSession {
@@ -92,15 +92,15 @@ public class MockPortletSession implements PortletSession {
@ -321,8 +322,8 @@ public class MediaType implements Comparable<MediaType> {
@@ -321,8 +322,8 @@ public class MediaType implements Comparable<MediaType> {
Assert.hasLength(type,"'type' must not be empty");
Assert.hasLength(subtype,"'subtype' must not be empty");
Assert.hasLength(type,"type must not be empty");
Assert.hasLength(subtype,"subtype must not be empty");
checkToken(type);
checkToken(subtype);
this.type=type.toLowerCase(Locale.ENGLISH);
@ -347,11 +348,11 @@ public class MediaType implements Comparable<MediaType> {
@@ -347,11 +348,11 @@ public class MediaType implements Comparable<MediaType> {
thrownewIllegalArgumentException("Invalid token character '"+ch+"' in token \""+s+"\"");
thrownewIllegalArgumentException("Invalid token character '"+ch+"' in token \""+token+"\"");
}
}
}
@ -681,7 +682,7 @@ public class MediaType implements Comparable<MediaType> {
@@ -681,7 +682,7 @@ public class MediaType implements Comparable<MediaType> {
Assert.hasLength(mediaType,"'mediaType' must not be empty");
@ -694,15 +695,15 @@ public class MediaType implements Comparable<MediaType> {
@@ -694,15 +695,15 @@ public class MediaType implements Comparable<MediaType> {
}
intsubIndex=fullType.indexOf('/');
if(subIndex==-1){
thrownewIllegalArgumentException("\""+mediaType+"\" does not contain '/'");
thrownewInvalidMediaTypeException(mediaType,"does not contain '/'");
}
if(subIndex==fullType.length()-1){
thrownewIllegalArgumentException("\""+mediaType+"\" does not contain subtype after '/'");
thrownewInvalidMediaTypeException(mediaType,"does not contain subtype after '/'");
thrownewIllegalArgumentException("A wildcard type is legal only in '*/*' (all media types).");
thrownewInvalidMediaTypeException(mediaType,"wildcard type is legal only in '*/*' (all media types)");
}
Map<String,String>parameters=null;
@ -719,7 +720,15 @@ public class MediaType implements Comparable<MediaType> {
@@ -719,7 +720,15 @@ public class MediaType implements Comparable<MediaType> {