[jboss-user] [JBoss Web Services] - Errors in implementing WS Security

Himaja Thovi do-not-reply at jboss.com
Tue Jan 11 01:00:19 EST 2011


Himaja Thovi [http://community.jboss.org/people/t.himaja] created the discussion

"Errors in implementing WS Security"

To view the discussion, visit: http://community.jboss.org/message/579931#579931

--------------------------------------------------------------
Hi All,
I created a Web Application as WS need to encrypt and sign SOAP message using WS Security in jboss 5.1.0GA.I followed steps from Jboss In Action.
My Web Service and jars i'm using are jbossws-core.jar, servlet-api.jar.

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import org.jboss.ws.annotation.EndpointConfig;
 
@WebService()
@SOAPBinding(style=SOAPBinding.Style.RPC)
@EndpointConfig(configName="Standard WSSecurity Endpoint")public class NewWebService {
   public String getMessage(){
         return "hello";
   }
}


My client is standalone class as and jars used are mail.jar, policy.jar, concurrent.jar, javassist.jar, jboss-common.jar, jaxb-impl.jar, jboss-remoting.jar, jboss-xml-binding.jar, jbossws-client.jar, log4j.jar, wsdl4j.jar, jbossws-spi.jar

import org.jboss.ws.annotation.EndpointConfig;
@EndpointConfig(configName="Standard WSSecurity Client")
public class Main {
  public static void main(String[] args) {     try { // Call Web Service Operation
            com.ws.NewWebServiceService service = new com.ws.NewWebServiceService();
            com.ws.NewWebService port = service.getNewWebServicePort();
            java.lang.String result = port.getMessage();
            System.out.println("Result = "+result);
        } catch (Exception ex) {
           ex.printStackTrace();
        }
    }
}


My config files are as
At client 
standard-jaxws-client-config.xml
<?xml version="1.0" encoding="UTF-8"?> 
<jaxws-config xmlns="urn:jboss:jaxws-config:2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:javaee="http://java.sun.com/xml/ns/javaee"
  xsi:schemaLocation="urn:jboss:jaxws-config:2.0 jaxws-config_2_0.xsd">
<client-config>
    <config-name>Standard WSSecurity Client</config-name>
    <post-handler-chains>
      <javaee:handler-chain>
        <javaee:protocol-bindings>##SOAP11_HTTP ##SOAP11_HTTP_MTOM</javaee:protocol-bindings>
        <javaee:handler>
          <javaee:handler-name>WSSecurityHandlerOutbound</javaee:handler-name>
          <javaee:handler-class>org.jboss.ws.extensions.security.jaxws.WSSecurityHandlerClient</javaee:handler-class>
        </javaee:handler>
      </javaee:handler-chain>
    </post-handler-chains>
  </client-config>
</jaxws-config>


Another file jboss-wsse-client.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-ws-security
 xmlns="http://www.jboss.com/ws-security/config"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.jboss.com/ws-security/config
 http://www.jboss.com/ws-security/schema/jboss-ws-security_1_0.xsd">
     <key-store-file>META-INF/wsseClient.keystore</key-store-file>
     <key-store-type>jks</key-store-type>
     <key-store-password>client</key-store-password>
     <trust-store-file>META-INF/wsseClient.truststore</trust-store-file>
     <trust-store-type>jks</trust-store-type>
     <trust-store-password>client</trust-store-password>
     <key-passwords>
       <key-password alias="client" password="client" />
     </key-passwords>
     <config>
        <encrypt type="x509v3" alias="wsseServer"/>
     <requires>                                            
     <encryption/> 
   </requires>          
  </config>
</jboss-ws-security>


At server we have file
jboss-wsse-server.xml

<jboss-ws-security
 xmlns="http://www.jboss.com/ws-security/config"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.jboss.com/ws-security/config
http://www.jboss.com/ws-security/schema/jboss-ws-security_1_0.xsd">
 <key-store-file>WEB-INF/wsse.keystore</key-store-file>
 <key-store-type>jks</key-store-type>
 <key-store-password>wsseServer</key-store-password>
 <trust-store-file>WEB-INF/wsse.truststore</trust-store-file>
 <trust-store-type>jks</trust-store-type>
 <trust-store-password>wsseServer</trust-store-password>
 <key-passwords>
   <key-password alias="wsseServer" password="wsseServer" />
 </key-passwords>
 <config>
   <encrypt type="x509v3" alias="wsseClient"/>
   <requires>
    <encryption />
   </requires>
 </config>
</jboss-ws-security>


At client side the output in log is like 

DEBUG [main] (JAXWSClientMetaDataBuilder.java:77) - START buildMetaData: [service={http://ws.com/}NewWebServiceService]DEBUG [main] (WSDLDefinitionsFactory.java:102) - parse: http://127.0.0.1:9898/TrialWSApplication/NewWebService?wsdl
DEBUG [main] (JAXWSClientMetaDataBuilder.java:102) - END buildMetaData: 
UnifiedMetaData: 
 implementation: jbossws-3.0.1-native-2.0.4.GA (build=200803312044)
 deploymentName: null
 securityDomain: null

ServiceMetaData:
 qname={http://ws.com/}NewWebServiceService
 refName=null
 wsdName=null
 wsdlFile=null
 wsdlLocation=http://127.0.0.1:9898/TrialWSApplication/NewWebService?wsdl
 jaxrpcMapping=null
 publishLocation=null
 securityConfig=null
 properties=null

TypesMetaData: 

ClientEndpointMetaData:
 type=JAXWS
 qname={http://ws.com/}NewWebServicePort
 address=http://127.0.0.1:9898/TrialWSApplication/NewWebService
 binding=http://schemas.xmlsoap.org/wsdl/soap/http
 seiName=null
 configFile=META-INF/standard-jaxws-client-config.xml
 configName=Standard Client
 authMethod=null
 properties={}

OperationMetaData:
 qname={http://ws.com/}getMessage
 javaName={http://ws.com/}getMessage
 style=rpc/literal
 oneWay=false
 soapAction=
DEBUG [main] (JAXWSClientMetaDataBuilder.java:276) - START: rebuildMetaData
DEBUG [main] (EndpointMetaData.java:321) - setParameterStyle: null
DEBUG [main] (JAXWSMetaDataBuilder.java:134) - processSOAPBinding on: com.ws.NewWebService
DEBUG [main] (EndpointMetaData.java:321) - setParameterStyle: WRAPPED
DEBUG [main] (EndpointMetaData.java:812) - Create new config [name=Standard Client,file=META-INF/standard-jaxws-client-config.xml]
DEBUG [main] (JBossWSConfigFactory.java:125) - getConfig: [name=Standard Client,url=META-INF/standard-jaxws-client-config.xml]
DEBUG [main] (JBossWSConfigFactory.java:71) - parse: jar:file:/home/himaja/project/jars/jbossws-client.jar!/META-INF/standard-jaxws-client-config.xml
DEBUG [main] (SaxJBossXBParser.java:241) - Created parser: org.apache.xerces.jaxp.SAXParserImpl at 14e8cee, isNamespaceAware: true, isValidating: true, isXIncludeAware: true
DEBUG [main] (SaxJBossXBParser.java:157) - http://xml.org/sax/features/validation set to: true
DEBUG [main] (SaxJBossXBParser.java:157) - http://xml.org/sax/features/namespaces set to: true
DEBUG [main] (SaxJBossXBParser.java:157) - http://apache.org/xml/features/validation/dynamic set to: true
DEBUG [main] (SaxJBossXBParser.java:157) - http://xml.org/sax/features/validation set to: true
DEBUG [main] (SaxJBossXBParser.java:157) - http://apache.org/xml/features/validation/schema set to: true
DEBUG [main] (SaxJBossXBParser.java:241) - Created parser: org.apache.xerces.jaxp.SAXParserImpl at 14e8cee, isNamespaceAware: true, isValidating: true, isXIncludeAware: true
DEBUG [main] (EndpointMetaData.java:867) - Configure EndpointMetaData
DEBUG [main] (EndpointMetaData.java:879) - Added 0 PRE handlers
DEBUG [main] (EndpointMetaData.java:880) - Added 0 ENDPOINT handlers
DEBUG [main] (EndpointMetaData.java:881) - Added 0 POST handlers
DEBUG [main] (JAXWSMetaDataBuilder.java:938) - JAXBContext [types=[class java.lang.String],tns=http://ws.com/]
DEBUG [main] (OperationMetaData.java:208) - Found best matching java method: public abstract java.lang.String com.ws.NewWebService.getMessage()
DEBUG [main] (JAXWSClientMetaDataBuilder.java:322) - END: rebuildMetaData

ServiceMetaData:
 qname={http://ws.com/}NewWebServiceService
 refName=null
 wsdName=null
 wsdlFile=null
 wsdlLocation=http://127.0.0.1:9898/TrialWSApplication/NewWebService?wsdl
 jaxrpcMapping=null
 publishLocation=null
 securityConfig=null
 properties=null

TypesMetaData: 
  [complexType={http://www.w3.org/2001/XMLSchema}string,javaType=java.lang.String]

ClientEndpointMetaData:
 type=JAXWS
 qname={http://ws.com/}NewWebServicePort
 address=http://127.0.0.1:9898/TrialWSApplication/NewWebService
 binding=http://schemas.xmlsoap.org/wsdl/soap/http
 seiName=com.ws.NewWebService
 configFile=META-INF/standard-jaxws-client-config.xml
 configName=Standard Client
 authMethod=null
 properties={}

OperationMetaData:
 qname={http://ws.com/}getMessage
 javaName=getMessage
 style=rpc/literal
 oneWay=false
 soapAction=
ReturnMetaData:
 xmlName=return
 partName=return
 xmlType={http://www.w3.org/2001/XMLSchema}string
 javaType=java.lang.String
 mode=OUT
 inHeader=false
 index=-1
DEBUG [main] (EndpointMetaData.java:732) - Configure SOAPBinding
DEBUG [main] (HandlerResolverImpl.java:125) - initHandlerChain: PRE
DEBUG [main] (HandlerResolverImpl.java:125) - initHandlerChain: ENDPOINT
DEBUG [main] (HandlerResolverImpl.java:125) - initHandlerChain: POST
DEBUG [main] (HandlerResolverImpl.java:99) - getHandlerChain: [type=PRE,info=[service={http://ws.com/}NewWebServiceService,port={http://ws.com/}NewWebServicePort,binding=http://schemas.xmlsoap.org/wsdl/soap/http]]
DEBUG [main] (HandlerResolverImpl.java:99) - getHandlerChain: [type=POST,info=[service={http://ws.com/}NewWebServiceService,port={http://ws.com/}NewWebServicePort,binding=http://schemas.xmlsoap.org/wsdl/soap/http]]
DEBUG [main] (HandlerResolverImpl.java:99) - getHandlerChain: [type=ENDPOINT,info=[service={http://ws.com/}NewWebServiceService,port={http://ws.com/}NewWebServicePort,binding=http://schemas.xmlsoap.org/wsdl/soap/http]]
DEBUG [main] (BindingImpl.java:94) - setHandlerChain: []
DEBUG [main] (ServiceDelegateImpl.java:434) - No port configuration for: {http://ws.com/}NewWebServicePort
DEBUG [main] (MessageContextAssociation.java:46) - pushMessageContext: org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS at f892a4 (Thread main)
DEBUG [main] (CommonSOAPBinding.java:144) - bindRequestMessage: {http://ws.com/}getMessage
DEBUG [main] (CommonSOAPBinding.java:189) - Create RPC body element: {http://ws.com/}getMessage
DEBUG [main] (HandlerChainExecutor.java:84) - Create a handler executor: []
DEBUG [main] (HandlerChainExecutor.java:84) - Create a handler executor: []
DEBUG [main] (HandlerChainExecutor.java:84) - Create a handler executor: []
DEBUG [main] (HTTPRemotingConnection.java:176) - Get locator for: [addr=http://127.0.0.1:9898/TrialWSApplication/NewWebService,props={javax.xml.ws.service.endpoint.address=http://127.0.0.1:9898/TrialWSApplication/NewWebService}]
DEBUG [main] (MicroRemoteClientInvoker.java:298) - org.jboss.remoting.transport.http.HTTPClientInvoker at 35bb0f connecting
DEBUG [main] (MicroRemoteClientInvoker.java:312) - org.jboss.remoting.transport.http.HTTPClientInvoker at 35bb0f connected
DEBUG [main] (HTTPRemotingConnection.java:220) - Remoting metadata: {NoThrowOnError=true, HEADER={SOAPAction="", Content-Type=text/xml; charset=UTF-8}}
DEBUG [main] (HTTPClientInvoker.java:313) - Setting request header with SOAPAction : ""
DEBUG [main] (HTTPClientInvoker.java:313) - Setting request header with Content-Type : text/xml; charset=UTF-8
DEBUG [main] (SOAPMessageUnMarshallerHTTP.java:123) - getMimeHeaders from: {Date=[Tue, 11 Jan 2011 05:24:08 GMT], NoThrowOnError=true, Content-Length=[0], HEADER={SOAPAction="", Content-Type=text/xml; charset=UTF-8}, ResponseCode=200, ResponseCodeMessage=OK, ResponseHeaders={null=[HTTP/1.1 200 OK], Date=[Tue, 11 Jan 2011 05:24:08 GMT], Content-Length=[0], Server=[Apache-Coyote/1.1], X-Powered-By=[Servlet 2.5; JBoss-5.0/JBossWeb-2.1]}, X-Powered-By=[Servlet 2.5; JBoss-5.0/JBossWeb-2.1], Server=[Apache-Coyote/1.1]}
DEBUG [main] (MessageFactoryImpl.java:215) - createMessage: [contentType=text/xml]
[Fatal Error] :-1:-1: Premature end of file.
DEBUG [main] (InvokerRegistry.java:631) - removed org.jboss.remoting.transport.http.HTTPClientInvoker at 35bb0f from registry
DEBUG [main] (MessageContextJAXWS.java:105) - Begin response processing
DEBUG [main] (MessageContextAssociation.java:75) - popMessageContext: org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS at f892a4 (Thread main)
DEBUG [main] (MessageContextAssociation.java:46) - pushMessageContext: org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS at 1342a67 (Thread main)
DEBUG [main] (CommonSOAPBinding.java:542) - unbindResponseMessage: {http://ws.com/}getMessage
DEBUG [main] (CommonClient.java:391) - Handler modified body payload, unbind message again
DEBUG [main] (CommonSOAPBinding.java:542) - unbindResponseMessage: {http://ws.com/}getMessage
DEBUG [main] (EndpointInvocation.java:190) - getReturnValue
DEBUG [main] (EndpointInvocation.java:268) - transformPayloadValue: null -> null
DEBUG [main] (HandlerChainExecutor.java:96) - close
DEBUG [main] (HandlerChainExecutor.java:96) - close
DEBUG [main] (HandlerChainExecutor.java:96) - close
DEBUG [main] (MessageContextAssociation.java:75) - popMessageContext: org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS at 1342a67 (Thread main)
Result = null
BUILD SUCCESSFUL (total time: 2 seconds)



At server side the error are

 ERROR [SOAPFaultHelperJAXWS] SOAP request exception
java.lang.ClassCastException: org.jboss.ws.core.soap.EnvelopeBuilderDOM
    at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:289)

ERROR [RequestHandlerImpl] Error processing web service request
org.jboss.ws.WSException: java.lang.ClassCastException: org.jboss.ws.core.soap.MessageFactoryImpl
    at org.jboss.ws.WSException.rethrow(WSException.java:68)

 ERROR [[NewWebService]] Servlet.service() for servlet NewWebService threw exception
java.lang.ClassCastException: org.jboss.ws.core.soap.MessageFactoryImpl
    at org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS.createSOAPMessage(SOAPFaultHelperJAXWS.java:288)


Waiting for the reply. 

Thanks in advance.
Regards,
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/579931#579931]

Start a new discussion in JBoss Web Services at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2044]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20110111/9100661e/attachment-0001.html 


More information about the jboss-user mailing list