Hi everyone
Have someone figured out how to make server push work when enabling security in
Blazeds and using custom adapters?. Authentication and Authorisation works for
remoting and fails with messaging.
The errors is from within Blazeds code. If someone can point me to a working
example I would really appreciate it.
I get the following error when extending service adapter and using
default-security-contstraint in messaging-service.xml
when calling msgBroker.routeMessageToService(msg,null);
java.lang.NullPointerException at
flex.messaging.FlexContext.isPerClientAuthentication(FlexContext.java:319)
at flex.messaging.FlexContext.getUserPrincipal(FlexContext.java:338)
at
flex.messaging.security.LoginManager.getCurrentPrincipal(LoginManager.java:377)
at flex.messaging.security.LoginManager.checkConstraint(LoginManager.java:305)
at flex.messaging.MessageBroker.inspectOperation(MessageBroker.java:1754)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1492)
If i extend messagingadapter and adds subscribe and send-security constraints
in messaging-config.xml
I get this error
java.lang.NullPointerException at
flex.messaging.FlexContext.isMessageFromPeer(FlexContext.java:297)
at
flex.messaging.services.messaging.adapters.MessagingSecurityConstraintManager.checkConstraint(MessagingSecurityConstraintManager.java:129)
at
flex.messaging.services.messaging.adapters.MessagingSecurityConstraintManager.assertSendAuthorization(MessagingSecurityConstraintManager.java:88)
at
flex.messaging.services.MessageService.serviceMessage(MessageService.java:273)
at
flex.messaging.services.MessageService.serviceMessage(MessageService.java:204)
at
flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1503)
at
com.markedskraft.orwell.nef.services.ClientPusher$$anon$1.onMessage(PlanStatusAdapter.scala:51)
at
org.jboss.jms.client.container.ClientConsumer.callOnMessage(ClientConsumer.java:229)
at
org.jboss.jms.client.container.ClientConsumer$ListenerRunner.run(ClientConsumer.java:1043)
at
org.jboss.messaging.util.OrderedExecutorFactory$ChildExecutor.run(OrderedExecutorFactory.java:120)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:637)
in messaging-config.xml:
<destination id="Status">
<channels>
<!--channel ref="my-streaming-amf"/-->
<channel ref="my-longpolling-amf"/>
<channel ref="my-amf"/>
</channels>
<properties>
<server>
<send-security-constraint ref="user-custom"/>
<subscribe-security-constraint ref="user-custom"/>
</server>
</properties>
<adapter ref="StatusAdapter"/>
</destination>
I have class StatusAdapter extends MessagingAdapter
which overrides invoke and in the end calls
msgService.pushMessageToClients(newMessage, true);
Then I have a "thread" that calls
aMsg = new AsyncMessage()
aMsg.setDestination("Status");
aMsg.setMessageId(UUIDUtils.createUUID());
aMsg.setClientId(clientID)
aMsg.setBody(myData)
msgBroker = MessageBroker.getMessageBroker(null);
msgBroker.routeMessageToService(aMsg, null)
and it fails with the previously written errors
Thank you very much in advance
Steffen