2009-10-09 14 views
5

Sto installando il mio ambiente di test e ho bisogno di registrare a livello di codice mio gestore/trasporto invece di utilizzare un client-config.wsdd:Sbarazzarsi di client-config.wsdd in Axis

<?xml version="1.0" encoding="UTF-8"?> 
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> 
<handler name="MyClient" type="java:foo.bar.MyClient"/> 
<transport name="MyTransport" pivot="MyClient"/> 
</deployment> 

Vuoi sapere se è possibile?

Grazie in anticipo.

risposta

10

OK, ho controllato le fonti Axis e il seguente codice risolto il mio problema:

AxisProperties.setProperty(EngineConfigurationFactory.SYSTEM_PROPERTY_NAME, "foo.bar.MyEngineConfigurationFactory"); 

...

import org.apache.axis.EngineConfiguration; 
import org.apache.axis.EngineConfigurationFactory; 
import org.apache.axis.configuration.BasicClientConfig; 

public class MyEngineConfigurationFactory implements EngineConfigurationFactory { 

    public static EngineConfigurationFactory newFactory(Object param) { 
     return new MyEngineConfigurationFactory(); 
    } 

    public EngineConfiguration getClientEngineConfig() { 
     BasicClientConfig cfg = new BasicClientConfig(); 
     cfg.deployTransport("MyTransport", new MyClient()); 
     return cfg; 
    } 

    public EngineConfiguration getServerEngineConfig() { 
     return null; 
    } 
} 

Questo è tutto. Spero che aiuti qualcuno.

+0

L'esempio mostrato su [gestore lato client JAX-RPC] (http://users.skynet.be/pascalbotte/rcx-ws-doc/jaxrpchandler.htm) mi ha fornito alcune informazioni utili per risolvere un problema simile. Sto solo condividendo i miei due centesimi. – user624558