Subscription failed saying User not logged in but user is logged in for granite 3.1.0.M1

95 views
Skip to first unread message

Cory Showers

unread,
May 13, 2014, 4:18:09 PM5/13/14
to gran...@googlegroups.com
Environment 
Client: Javafx 8
Server: tomcat 7.0.53
granite: 3.1.0.M1

I just upgraded to 3.1.0.M1 and now my subscriptions don't work.   User currently authenticates and Identity in instantiated with logged in user.  I then get a consumer from serverSession and subscribe but subscription fails saying user not logged in.

Error message 

ERROR 05-13 16:03:38 Subscription failed org.granite.client.messaging.Consumer {subscriptionId=null, destination=blotter, topic=crs, selector=null}: org.granite.client.messaging.events.FaultEvent{code=NOT_LOGGED_IN, description=User not logged in, details=null, cause=null, extended={}, unknownCode=null}  (Slf4jLogger.java:102) 


I even invoked the subscription when loggedInProperty returns with newValue = true to prove that I am authenticated and now want to subscribe.   This use to work in 3.0.3.  Did something change in how i'm configuring it?

Spring beans Config
/**
* Configuration for server remoting and messaging
*/
@Bean
public ServerSession serverSession() throws Exception {
String serverHost = environment.getProperty("server.host");
String serverPort = environment.getProperty("server.port");
ServerSession serverSession = new ServerSession("/indms", serverHost, Integer.valueOf(serverPort));
serverSession.setMessagingTransport(ChannelType.WEBSOCKET,new JettyWebSocketTransport());
           return serverSession;
}

/**
* Identity component that integrates with server-side Spring Security 
*/
@Bean
public Identity identity(ServerSession serverSession) throws Exception {
return new Identity(serverSession);
}

// logged in and subscribing
  identity.loggedInProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> property, Boolean oldValue, Boolean newValue) {
log.info("loggedInProperty listener " + newValue);

//Hey I'm logged in now start subscribing
if(newValue){
consumer = serverSession.getConsumer(BlotterPublisherInterface.TOPIC, "crs1",ChannelType.WEBSOCKET);
try {
consumer.subscribe().get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});

Cory Showers

unread,
May 13, 2014, 5:02:01 PM5/13/14
to gran...@googlegroups.com
After further investigation, it seems to be with WebSockets.   I'm not having any luck with websockets it seems.  In 3.0.3, I have other issue with Websockets i'm looking for an answer for.  And now it seems it doesnt work at all in this release.  When I change transport back to GravityAsyncServlet subscription works fine.   Below is my configuration and consumer call

@Bean
public ServerSession serverSession() throws Exception {
String serverHost = environment.getProperty("server.host");
String serverPort = environment.getProperty("server.port");
ServerSession serverSession = new ServerSession("/indms", serverHost, Integer.valueOf(serverPort));
             return serverSession;
}
...
identity.loggedInProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> property,
Boolean oldValue, Boolean newValue) {
log.info("loggedInProperty listener " + newValue);
showView(primaryStage, newValue, version);
if(newValue){
consumer = serverSession.getConsumer(BlotterPublisherInterface.TOPIC, "crs1");
try {
consumer.subscribe().get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
...


Here is debug log files...
DEBUG 05-13 16:40:33 Authorize org.granite.gravity.DefaultGravity$1@84814f on destination "blotter" (secured: true)  (Slf4jLogger.java:90) 
DEBUG 05-13 16:40:33 Restore authentication from repository: "crs"  (Slf4jLogger.java:90) 
DEBUG 05-13 16:40:33 Is authenticated as: "crs"  (Slf4jLogger.java:90) 
DEBUG 05-13 16:40:33 Allowed access to "crs" in role "ROLE_TEST"  (Slf4jLogger.java:90) 
DEBUG 05-13 16:40:33 >> Finding serviceAdapter for messageType: "flex.messaging.messages.AsyncMessage" and destinationId: "blotter"  (Slf4jLogger.java:90) 
DEBUG 05-13 16:40:33 >> Found adapterRef: "simple-adapter"  (Slf4jLogger.java:90) 
DEBUG 05-13 16:40:33 >> Found a cached serviceAdapter for ref: org.granite.config.flex.Adapter@d78e9b  (Slf4jLogger.java:90) 
DEBUG 05-13 16:40:33 << Returning serviceAdapter: org.granite.gravity.adapters.SimpleServiceAdapter@2ad8e1  (Slf4jLogger.java:90) 
DEBUG 05-13 16:40:33 New Topic: /crs1 {[]}  (Slf4jLogger.java:90) 
DEBUG 05-13 16:40:33 Channel "0FC87AA7-382D-4B43-8BE5-37CD8D70011C" subscribed to destination "blotter" subscriptionId "115A4B87-D924-40D0-BF23-F08C2286E6A0" selector null  (Slf4jLogger.java:90) 

Here are debug log files when websockets is enabled.   Do I need to use tomcat 8 websocket support?  And if so is 3.1.0.M1 still using  org.granite.gravity.tomcat.TomcatWebSocketServlet?

INFO  05-13 16:46:49 WebSocket connection started "org.granite.gravity.jmf+amf" clientId null sessionId null  (Slf4jLogger.java:54) 
DEBUG 05-13 16:46:49 Could not get distributed data, no session or session expired  (Slf4jLogger.java:90) 
DEBUG 05-13 16:46:49 Scheduling TimerTask: org.granite.gravity.ChannelTimerTask {channelId=8488509A-B375-4937-881A-F58FC6794ED6} for 30000 ms.  (Slf4jLogger.java:90) 
DEBUG 05-13 16:46:49 handshake.handle: reply=flex.messaging.messages.AcknowledgeMessage {
  correlationId = 756235A1-9B71-489D-A994-9520BFBE5F0E
  destination = null
  headers = {}
  messageId = 17129DA0-8222-48C6-8DC3-DEC885538CF3
  timestamp = 1400014009885
  clientId = 8488509A-B375-4937-881A-F58FC6794ED6
  timeToLive = 0
  body = {reconnect-max-attempts=60, reconnect-interval-ms=10000, encode-message-body=false}
}  (Slf4jLogger.java:90) 
DEBUG 05-13 16:46:49 Channel "8488509A-B375-4937-881A-F58FC6794ED6" websocket connect clientId "8488509A-B375-4937-881A-F58FC6794ED6" ""  (Slf4jLogger.java:90) 
DEBUG 05-13 16:46:49 Channel "8488509A-B375-4937-881A-F58FC6794ED6" websocket receive 8192 bytes  (Slf4jLogger.java:90) 
DEBUG 05-13 16:46:49 >> [AMF3 REQUESTS] [flex.messaging.messages.CommandMessage {
  messageRefType: null
  operation: SUBSCRIBE
  correlationId = null
  destination = blotter
  headers = {DSEndpoint=websocketamf, DSSubtopic=crs1}
  messageId = 1AB23686-3909-4420-9EFC-494443219E4F
  timestamp = 1400014009866
  clientId = 8488509A-B375-4937-881A-F58FC6794ED6
  timeToLive = 60000
  body = null
}]  (Slf4jLogger.java:90) 
DEBUG 05-13 16:46:49 Channel "8488509A-B375-4937-881A-F58FC6794ED6" received message "1AB23686-3909-4420-9EFC-494443219E4F" for clientId "8488509A-B375-4937-881A-F58FC6794ED6"  (Slf4jLogger.java:90) 
DEBUG 05-13 16:46:49 Canceling TimerTask: org.granite.gravity.ChannelTimerTask {channelId=8488509A-B375-4937-881A-F58FC6794ED6}  (Slf4jLogger.java:90) 
DEBUG 05-13 16:46:49 Scheduling TimerTask: org.granite.gravity.ChannelTimerTask {channelId=8488509A-B375-4937-881A-F58FC6794ED6} for 30000 ms.  (Slf4jLogger.java:90) 
DEBUG 05-13 16:46:49 << [AMF3 RESPONSES] [flex.messaging.messages.ErrorMessage {
  faultCode = Server.Security.NotLoggedIn
  faultDetail = null
  faultString = User not logged in
  rootCause = null
  extendedData = {}
  correlationId = 1AB23686-3909-4420-9EFC-494443219E4F
  destination = null
  headers = {}
  messageId = 3270324A-C00D-409B-8D26-63AC38C52FA7
  timestamp = 1400014009900
  clientId = 8488509A-B375-4937-881A-F58FC6794ED6
  timeToLive = 0
  body = null
}]  (Slf4jLogger.java:90) 
DEBUG 05-13 16:47:19 Removing channel: "8488509A-B375-4937-881A-F58FC6794ED6"...  (Slf4jLogger.java:90) 
DEBUG 05-13 16:47:19 Could not get distributed data, no session or session expired  (Slf4jLogger.java:90) 
DEBUG 05-13 16:47:19 Channel: "8488509A-B375-4937-881A-F58FC6794ED6" removed.  (Slf4jLogger.java:90) 

William Drai

unread,
May 13, 2014, 5:25:51 PM5/13/14
to gran...@googlegroups.com
Websockets do not initiate a http session, so 
can you try using this web.xml snippet to force the creation of a session on the websocket endpoint :



--

---
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "Granite Data Services Forum".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse graniteds+...@googlegroups.com.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.

Cory Showers

unread,
May 14, 2014, 8:20:15 AM5/14/14
to gran...@googlegroups.com
I added the snippet and still failed to subscribe.  Websocket always logged that it started, not sure what the filters are doing in this case.  I think the problem is tied to the Identity service and websockets.  It seems I'm able to authenticate and the http connection is upgraded to websockets.  However, when I'm looking to subscribe to a secure destination the server thinks I'm not authenticated.  If I check if user is loggedIn on client I get logged in user.   Like I said this code was working on 3.0.3 so not sure whats different now.

When I first logged in and authenticate the Command message endpoint is "graniteamf"  not sure if that matters here.  But subscription Command endpoint is Websockets.    DEBUG statements show user is authenticated and saved to repo, now when subscribe command messages comes it tries to restore authenticated user and it says "none" as seen in below logs.   This might be the problem.   Can you confirm?

Log showing authenticate Command message
DEBUG 05-14 08:04:46 >> Processing AMF3 request:
flex.messaging.messages.CommandMessage {
  messageRefType: null
  operation: LOGIN
  correlationId = null
  destination = null
  headers = {DSEndpoint=graniteamf}
  messageId = 29F07B27-C9B0-451C-B66D-D73466F4BF04
  timestamp = 1400069085978
  clientId = 921442A3-B2B4-427C-92E9-CAC140579EA1
  timeToLive = 60000
  body = ****** (credentials)
}  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 Define authentication and save to repo: "crs"  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 Clear authentication after login  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 User "crs" logged in  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 << Returning AMF3 response:
flex.messaging.messages.AcknowledgeMessage {
  correlationId = 29F07B27-C9B0-451C-B66D-D73466F4BF04
  destination = null
  headers = {}
  messageId = 8B611730-6EF7-4437-A0CF-0B73F5F5C3AD
  timestamp = 1400069086069
  clientId = 4C5A30B2-A70D-4906-B351-6346EE6D2B47
  timeToLive = 0
  body = success
}  (Slf4jLogger.java:90) 

********************************************************

Here is the log showing when Subscribe command message comes.
INFO  05-14 08:04:46 WebSocket connection started "org.granite.gravity.jmf+amf" clientId null sessionId "2C49A3D8BDB7EF6042ADAC7ABB9F8864"  (Slf4jLogger.java:54) 
DEBUG 05-14 08:04:46 Saving channel id in distributed data: "0908581A-0851-4A21-934C-8B23CAAC055B"  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 Scheduling TimerTask: org.granite.gravity.ChannelTimerTask {channelId=0908581A-0851-4A21-934C-8B23CAAC055B} for 30000 ms.  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 handshake.handle: reply=flex.messaging.messages.AcknowledgeMessage {
  correlationId = B08FD69F-8BDF-4D54-94AB-BF990614F267
  destination = null
  headers = {}
  messageId = 7134FA61-2D5C-470D-ACF1-D4DE08BBA8AC
  timestamp = 1400069086633
  clientId = 0908581A-0851-4A21-934C-8B23CAAC055B
  timeToLive = 0
  body = {reconnect-max-attempts=60, reconnect-interval-ms=10000, encode-message-body=false}
}  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 Channel "0908581A-0851-4A21-934C-8B23CAAC055B" websocket connect clientId "0908581A-0851-4A21-934C-8B23CAAC055B" ""  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 Channel "0908581A-0851-4A21-934C-8B23CAAC055B" websocket receive 8192 bytes  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 >> [AMF3 REQUESTS] [flex.messaging.messages.CommandMessage {
  messageRefType: null
  operation: SUBSCRIBE
  correlationId = null
  destination = blotter
  headers = {DSEndpoint=websocketamf, DSSubtopic=crs1}
  messageId = 6422B079-E6FB-4088-BFEA-72426A307DAC
  timestamp = 1400069086619
  clientId = 0908581A-0851-4A21-934C-8B23CAAC055B
  timeToLive = 60000
  body = null
}]  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 Authorize org.granite.gravity.DefaultGravity$1@1527c4f on destination "blotter" (secured: true)  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 Restore authentication from repository: "none"  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 User not authenticated!  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 Clear authentication and save to repo: "none"  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 Channel "0908581A-0851-4A21-934C-8B23CAAC055B" received message "6422B079-E6FB-4088-BFEA-72426A307DAC" for clientId "0908581A-0851-4A21-934C-8B23CAAC055B"  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 Canceling TimerTask: org.granite.gravity.ChannelTimerTask {channelId=0908581A-0851-4A21-934C-8B23CAAC055B}  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 Scheduling TimerTask: org.granite.gravity.ChannelTimerTask {channelId=0908581A-0851-4A21-934C-8B23CAAC055B} for 30000 ms.  (Slf4jLogger.java:90) 
DEBUG 05-14 08:04:46 << [AMF3 RESPONSES] [flex.messaging.messages.ErrorMessage {
  faultCode = Server.Security.NotLoggedIn
  faultDetail = null
  faultString = User not logged in
  rootCause = null
  extendedData = {}
  correlationId = 6422B079-E6FB-4088-BFEA-72426A307DAC
  destination = null
  headers = {}
  messageId = C5D43E65-2F7B-4438-9CEA-3149164E323C
  timestamp = 1400069086647
  clientId = 0908581A-0851-4A21-934C-8B23CAAC055B
  timeToLive = 0
  body = null
}]  (Slf4jLogger.java:90) 

********web.xml*****
<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
 

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
            /WEB-INF/spring/app-config.xml
             /WEB-INF/spring/app-security-config.xml
             /WEB-INF/spring/app-jms-config.xml
         </param-value>
</context-param>

<!-- Spring listeners -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

<listener>
<listener-class>org.granite.config.GraniteConfigListener</listener-class>
</listener>

 
    
<!-- Spring MVC dispatcher servlet that handles incoming AMF requests on 
the /graniteamf endpoint -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
 
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/graniteamf/*</url-pattern>
<url-pattern>*.service</url-pattern>
</servlet-mapping>
 
<servlet>
<servlet-name>WebSocketServlet</servlet-name>
<servlet-class>org.granite.gravity.tomcat.TomcatWebSocketServlet</servlet-class>

<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WebSocketServlet</servlet-name>
<url-pattern>/websocketamf/*</url-pattern>
</servlet-mapping>
<filter>
        <filter-name>CreateSessionFilter</filter-name>
        <filter-class>org.granite.clustering.CreateSessionFilter</filter-class>
        <async-supported>true</async-supported>
    </filter>
     <filter-mapping>
        <filter-name>CreateSessionFilter</filter-name>
        <url-pattern>/gravityamf/*</url-pattern>
    </filter-mapping>  
    <filter-mapping>
        <filter-name>CreateSessionFilter</filter-name>
        <url-pattern>/websocketamf/*</url-pattern>
    </filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>

</web-app>

William Drai

unread,
May 14, 2014, 5:14:28 PM5/14/14
to gran...@googlegroups.com
Seems a problem with spring security. Can you post your app-security-config.xml ?

Cory Showers

unread,
May 15, 2014, 12:19:22 AM5/15/14
to gran...@googlegroups.com
I would agree except it works when using just regular long polling, but doesn't work for Websockets.  And worse this spring security configurations works for granite 3.0.3.  below is the config.  I would probably just the new 3.0.4 release since this is a milestone release and their might be some bugs that need to be worked out.   I was wondering if I stumbled on a bug or a new configuration setup I'm not aware of that was introduced in 3.1.0

<?xml version="1.0" encoding="UTF-8"?>
 
      xmlns:graniteds="http://www.graniteds.org/config"
 
    <ldap-server id="contextSource" url="...." />

<authentication-manager alias="authenticationManager">
<authentication-provider ref="ldapAuthProvider" />
 
</authentication-manager>
<beans:bean id="ldapAuthProvider"
class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
<beans:constructor-arg>
<beans:bean
class="org.springframework.security.ldap.authentication.BindAuthenticator">
<beans:constructor-arg>
<beans:ref bean="contextSource" />
</beans:constructor-arg>
<beans:property name="userDnPatterns">
<beans:list>
<beans:value>uid={0},ou=people</beans:value>
</beans:list>
</beans:property>
</beans:bean>
</beans:constructor-arg>
<beans:constructor-arg>
<beans:bean id="ldapPopulator"
class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
<beans:constructor-arg ref="contextSource" />
<beans:constructor-arg value="ou=groups" />
<beans:property name="searchSubtree" value="true" />
<beans:property name="defaultRole">
<beans:value>ROLE_ALL</beans:value>
</beans:property>
</beans:bean>
</beans:constructor-arg>
<beans:property name="userDetailsContextMapper" ref="userDetailMapper" />
</beans:bean>

 
<beans:bean id="userDetailMapper" class="UserDetailsMapper" />
     
    <global-method-security secured-annotations="enabled" jsr250-annotations="enabled"/>
 
    <!-- Configuration for Tide/Spring authorization -->
  <graniteds:tide-identity/>
 
 
</beans:beans>

William Drai

unread,
May 18, 2014, 4:16:12 PM5/18/14
to gran...@googlegroups.com
I think I've got the issue.
There have indeed been a lot of refactoring in the websocket stuff to allow support for JSR 356.
The main problem here is that the start of the messaging transports is now lazy, so the transport starts only when a channel is created.
In your case, it happens when you call serverSession.getConsumer(BlotterPublisherInterface.TOPIC, "crs1",ChannelType.WEBSOCKET).
The bug is that the channel does not get the correct sessionId at this time.

It can be easily solved by moving the initialization of the Consumer before the call of Identity.login().

It's even better to do it like this because creating a Consumer and starting a transport can be a relatively long operation and it's better not to trigger it in a result handler.
Similarly, it's better to avoid a blocking call to subscribe() in your result handler.


Cory Showers

unread,
May 22, 2014, 12:12:29 PM5/22/14
to gran...@googlegroups.com
I will give this a try.  I saw that issue was fixed so maybe I will get next nightly build and try again.

Cory Showers

unread,
Sep 26, 2014, 3:31:46 PM9/26/14
to gran...@googlegroups.com
Granite 3.1.0.GA
Tomcat 7.53
Websockets
Spring security
Javafx  8 

Need help this old problem is back, but in a different form.  I am getting NOT_LOGGED_IN/ Invalid Context error when attempting to resubscribe to a previously connected consumer.  The patch for the earlier problem fixed my issue a few months ago I haven't had any problem with connecting to websocket under normal subscriptions.  The problem I'm running into now is when the server dies by doing a restart and comes back.  Granite will poll the server every 30 seconds to reconnect websockets.   If the server connection is reestablished, all Consumer subscriptions are no longer active, so the natural solution is just to resubscribe.   



****ERROR ****
Subscription failed org.granite.client.messaging.Consumer {subscriptionId=null, destination=NEW_DEAL, topic=all, selector=null}: org.granite.client.messaging.events.FaultEvent{code=NOT_LOGGED_IN, description=Invalid context, details=null, cause=null, extended={}, unknownCode=null}  (Slf4jLogger.java:102) 
INFO  09-26 15:08:34 Trying again onSubscribeFault NEW_DEAL org.granite.client.messaging.messages.responses.FaultMessage {
    id=49D31A38-E72F-4304-B9F2-A553DDEFBB5A
    clientId=0C6D6FBB-8F47-4055-83BD-4D1050E612B6
    timestamp=1411758514232
    timeToLive=0
    headers={}
    correlationId=021A01E0-C824-4767-9606-7D7BE8F616BF
    code=NOT_LOGGED_IN
    description=Invalid context
    details=null
    cause=null
    extended={}
}


Initially I would just resubscribe but I then tried to logging back in using your advice by Initializing consumers again, then logging in, then calling subscribe on consumers.  This will fail unless a very import order is followed.  This process will work if consumer.subscribe() is the first to initiate connection with the server thereby creating a websocket session before the retry event every 30 secs.   If the reconnect timeout occurs before I can subscribe then the session associated with the reconnect does not honor my consumer subscribe.

This issue is easily reproducible. 
Step 1. Set server reconnect to 10s
Step 2. bring client and server up, and wait for all subscriptions to take place
Step 3. kill server.  client will attempt to reconnect every 10s
Step 4. bring up server and wait for websocket connection to handshake.  The below log tells me reconnect is done
Step 5. Attempt to subscribe again to previously held subcriptions.

FYI-
I always get below log when websockets connects successfully.  Not sure why I get warning but it works.  This log usually appears when I call subscribe on consumer.  If reconnect happens first the below log appears at the reconnect time.   When about to subscribe no such log appears.
INFO  09-26 15:08:16 Connecting to websocket ws://localhost:8080/app/websocketamf/amf protocol "org.granite.gravity.jmf+amf" sessionId "CF99626055145ACC94A8AA2686022CDC" clientId "9FA7FC6F-E2E9-4FE5-86C4-B3AE18EB8B89"  (Slf4jLogger.java:54) 
WARN  09-26 15:08:19 Unknown correlation id: "C9E2123F-634D-445F-90C6-DA6AB1016A78"  (Slf4jLogger.java:78) 



  messageId = 3270324A-C00D-409B-8D26-63AC38C52FA7</
...

Cory Showers

unread,
Sep 26, 2014, 3:47:20 PM9/26/14
to gran...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages