2016-08-02 36 views
0

Ich versuche, eine WAR-Datei auf einem Jboss EAP 7 AS bereitzustellen. Die Datei enthält einen SOAP-über-JMS-Webservice einschließlich einer WSDL-Beschreibung. (Relevante Teil unten)SOAP über JMS-Service auf EAP 7

<soapjms:jndiConnectionFactoryName>java:jms/RemoteConnectionFactory</soapjms:jndiConnectionFactoryName> 
    <soapjms:jndiURL>http-remoting://localhost:8080</soapjms:jndiURL> 
    <wsdl:port binding="tns:SoapBinding" name="WebServicePort"> 
     <soap:address location="jms:queue:MyQueue"/> 
    </wsdl:port> 

Leider immer bekomme ich folgende Fehler während des Bereitstellungsprozesses:

ERROR [org.apache.activemq.artemis.core.server] (default I/O-1) AMQ224018: Failed to create session: ActiveMQSecurityException[errorType=SECURITY_EXCEPTION message=AMQ119031: Unable to validate user: null] 
    at org.apache.activemq.artemis.core.security.impl.SecurityStoreImpl.authenticate(SecurityStoreImpl.java:134) 
    at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.createSession(ActiveMQServerImpl.java:985) 
    at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQPacketHandler.handleCreateSession(ActiveMQPacketHandler.java:150) 
    at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQPacketHandler.handlePacket(ActiveMQPacketHandler.java:76) 
    at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.handlePacket(ChannelImpl.java:626) 
    at org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.doBufferReceived(RemotingConnectionImpl.java:349) 
    at org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:331) 
    at org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl$DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:616) 
    at org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:265) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846) 
    at org.xnio.netty.transport.AbstractXnioSocketChannel$ReadListener.handleEvent(AbstractXnioSocketChannel.java:435) 
    at org.xnio.netty.transport.AbstractXnioSocketChannel$ReadListener.handleEvent(AbstractXnioSocketChannel.java:371) 
    at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92) 
    at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66) 
    at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:88) 
    at org.xnio.nio.WorkerThread.run(WorkerThread.java:559) 

Ich hatte das gleiche Verhalten mit EAP 6.4, die HornetQ als Message Broker verwendet. HornetQ bietet die Möglichkeit, das Sicherheitssystem einfach in der EAP-Konfigurationsdatei auszuschalten.

<security-enabled>false</security-enabled> 

Aber ich fand keine Lösungen für die EAP-7, die anstelle von Apache ActiveMQ verwendet.

Vielen Dank für Ihre Antworten im Voraus!

Antwort

0

Endlich fand ich eine funktionierende Lösung, indem ich den Benutzernamen und das Passwort der JMS URL hinzufügte.

<soap:address location="jms:queue:JISQueue?username=serviceuser&amp;password=EasyPW12"/> 

Aber das ist nicht das, was ich eigentlich suchte, weil jetzt jeder die Anmeldeinformationen in meinem WSDL Vertrag sehen kann.

Gibt es eine Möglichkeit, diese Informationen programmatisch an den CXF-Sicherheitskontext anzuhängen?