I'm unsure if you're making things harder than they have to be with a Dynamic client.

Generating your client via the WSDL2Java tool[1] should be much easier, after which from the WSDL it looks like you need X.509 security which you can do via [2] or [3]. But I would try to get [1] nailed down first (even though the service will return some authentication failed error) before doing [2] or [3].

HTH,
Glen

[1] http://www.jroller.com/gmazza/entry/soap_client_tutorial
[2] http://www.jroller.com/gmazza/entry/cxf_x509_profile
[3] http://www.jroller.com/gmazza/entry/cxf_x509_profile_secpol


On 2/21/2011 8:29 AM, Koen Thomeer wrote:
The WSDL is: http://wwwacc.ehealth.fgov.be/codage_1_0/codage?WSDL

Koen

2011/2/21 Koen Thomeer<[email protected]>

Hello,

I've to admit: I'm a beginning Java Developer. I'm comming from the PHP
world.

Can someone help me: I get this error:

java.lang.NoSuchMethodException:
be.smals.ehealth.codage.beans.OriginalDataType.setApplicationName(java.lang.String)
         at java.lang.Class.getMethod(Class.java:1605)
         at cxfehealth.Main.main(Main.java:47)

Thx,

Koen


package cxfehealth;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.ws.security.handler.WSHandlerConstants;
import org.apache.cxf.endpoint.dynamic.DynamicClientFactory;
import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
import org.apache.cxf.endpoint.Client;
import java.util.HashMap;
import java.util.Map;
import java.io.File;
import java.net.URL;
import java.lang.reflect.Method;

/**
  *
  * @author Koen Thomeer, MD, http://koen.thomeer.be
  */
public class Main {

     /**
      * @param args the command line arguments
      */
     public static void main(String[] args) {
         try {
             // configure logging
             BasicConfigurator.configure();
             Logger.getLogger("org").setLevel(Level.WARN);

java.util.logging.Logger.getLogger("").setLevel(java.util.logging.Level.WARNING);
             // point to private wdsl
             URL wsdlURL;
             File wsdlFile = new File("src/codage.wsdl");
             wsdlURL = wsdlFile.toURL();
             System.out.println(wsdlURL);
             // use CXF dynamic clients
             DynamicClientFactory dcf = DynamicClientFactory.newInstance();
             ClassLoader classloader =
Thread.currentThread().getContextClassLoader();
             Client client = dcf.createClient(wsdlURL, classloader);
             Object EncodeRequestType =
Thread.currentThread().getContextClassLoader().loadClass("be.smals.ehealth.codage.beans.OriginalDataType").newInstance();
             //System.out.println(EncodeRequestType);
             Method m =
EncodeRequestType.getClass().getMethod("setApplicationName", String.class);
             m.invoke(EncodeRequestType, "WWM");


             // configure security settings
             Map<String, Object>  props = new HashMap<String, Object>();
             props.put(WSHandlerConstants.ACTION, "Timestamp Signature");
             props.put(WSHandlerConstants.TTL_TIMESTAMP, "15");
             props.put(WSHandlerConstants.USER, "wwm_eh_key");
             props.put(WSHandlerConstants.PW_CALLBACK_CLASS,
ClientCallbackHandler.class.getName());
             props.put(WSHandlerConstants.SIG_PROP_FILE,
"client_sign.properties");
             props.put(WSHandlerConstants.SIGNATURE_PARTS, "{Element}{
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;Token;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body
");
             props.put(WSHandlerConstants.SIG_KEY_ID, "DirectReference");
             client.getEndpoint().getOutInterceptors().add(new
WSS4JOutInterceptor(props));

             // call the WebService
             System.out.println(client.invoke("encode",
EncodeRequestType)[0]);
         } catch (Exception ex) {
             ex.printStackTrace();
         }
     }
}


--
*Koen Thomeer*, MD, MSc
http://koen.thomeer.be





Reply via email to