ws-wss4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dittmann, Werner (NSN - DE/Munich)" <werner.dittm...@nsn.com>
Subject RE: WSDoAllSender and Axis TypeMapping
Date Tue, 23 Jun 2009 11:59:44 GMT
WSDoAllSender uses "getAsDocument(...)" to get the SOAP request as XML DOM to be able
to process it. The involves "serialization" of the Java data types into XML. The getAsDocument(...)
is an Axis 1 function thus WSS4J cannot do much about it. Did you check if there is a known
issues with this function in Axis 1?
 
Regards,
Werener


________________________________

	From: ext Vitali Heinrich [mailto:vitali.heinrich@googlemail.com] 
	Sent: Tuesday, June 23, 2009 7:46 AM
	To: wss4j-dev@ws.apache.org
	Subject: WSDoAllSender and Axis TypeMapping
	
	

	Hi All,

	 

	I try to integrate wss4j in OFBiz. OFBiz uses Axis(1) 1.4 and all (web) services are described
by ofbiz engine. So I have no chance to create a .wsdd file. But it´s not bad, because I
can implement a client in code style. Now my problem:

	 

	My service needs as input a Bean (for example MyBean). So I register it in TypeMaping and
it works fine.

	But when I set WSDoAllSender as ClientHandler, MyBean could not be finding in TypeMapping
anymore.

	 

	Here some snippets:

	 

	service = new Service();

	call = (Call) service.createCall();

	 

	call.setClientHandlers(new WSDoAllSender(), null);

	call.setProperty(WSHandlerConstants.ACTION, WSHandlerConstants.SIGNATURE);

	call.setProperty(WSHandlerConstants.USER, "user");

	call.setProperty(WSHandlerConstants.SIG_KEY_ID, "DirectReference");

	call.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS,PasswordProvider.class.getName() );

	call.setProperty(WSHandlerConstants.SIG_PROP_FILE, "client-provider.properties");

	call.setProperty(WSHandlerConstants.MUST_UNDERSTAND, "0");

	 

	 

	/* inputObject = my.package.MyBean */

	/* inputObjectsName = "myBean" */

	 

	QName inputQName = new QName(registerPrefix,inputObject.getClass().getName());

	call.addParameter(inputObjectsName, inputQName, getMode("IN"));

	vParams.add(inputObject);

	 

	call.registerTypeMapping(inputObject.getClass(),inputQName,

	            new BeanSerializerFactory(inputObject.getClass(),inputQName),

	            new BeanDeserializerFactory(inputObject.getClass(),inputQName));

	 

	call.invoke(vParams.toArray());

	 

	So if the client handler is not set, if works fine.

	If it is set to WSDoAllSender I get this exception

	 

	 

	AxisFault

	 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException <http://schemas.xmlsoap.org/soap/envelope/%7DServer.generalException>


	 faultSubcode: 

	 faultString: WSDoAllSender: cannot get SOAP envlope from messagejava.io.IOException: No
serializer found for class my.package.MyBean in registry org.apache.axis.encoding.TypeMappingDelegate@d1e89e

	 faultActor: 

	 faultNode: 

	 faultDetail: 

	      {http://xml.apache.org/axis/}stackTrace:WSDoAllSender <http://xml.apache.org/axis/%7DstackTrace:WSDoAllSender>
: cannot get SOAP envlope from messagejava.io.IOException: No serializer found for class my.package.MyBean
in registry org.apache.axis.encoding.TypeMappingDelegate@d1e89e

	      at org.apache.ws.axis.security.WSDoAllSender.invoke(WSDoAllSender.java:159)

	      at org.apache.axis.client.AxisClient.invoke(AxisClient.java:121)

	      at org.apache.axis.client.Call.invokeEngine(Call.java:2784)

	      at org.apache.axis.client.Call.invoke(Call.java:2767)

	      at org.apache.axis.client.Call.invoke(Call.java:2443)

	      at org.apache.axis.client.Call.invoke(Call.java:2366)

	      at org.apache.axis.client.Call.invoke(Call.java:1812)

	. . .

	This exceptins ist throwing at this place of code (WSDoAllSender.invoke):

	            /*
	            * If the message context property conatins a document then this is
	            * a chained handler.
	            */
	            SOAPPart sPart = (org.apache.axis.SOAPPart) message.getSOAPPart();
	            if ((doc = (Document) ((MessageContext)reqData.getMsgContext())
	                    .getProperty(WSHandlerConstants.SND_SECURITY)) == null) {
	                try {
	                    doc = ((org.apache.axis.message.SOAPEnvelope) sPart
	                            .getEnvelope()).getAsDocument();
	                } catch (Exception e) {
	                    throw new AxisFault(
	                            "WSDoAllSender: cannot get SOAP envlope from message"
	                                    + e);
	                }
	            }
	

	
	

	
	

	Can anybody help me? 

	Does anybody have some experience in integrating wss4j in ofbiz?

	
	

	Another question is:

	Is it possible to integrate wss4j on server site without a XML file but in code style like
on the client site?
	




Mime
View raw message