Domanda

Sto utilizzando Apache Axis per connettere la mia app Java a un server web.Ho utilizzato wsdl2java per creare gli stub per me, ma quando provo a utilizzare gli stub, ottengo la seguente eccezione:

org.apache.axis.ConfigurationException:Nessun servizio nominato <web service name> è disponibile

qualche idea?

È stato utile?

Soluzione

È solo un'ipotesi, ma sembra che il messaggio di errore riporti che hai lasciato vuoto il nome del servizio.Immagino che il codice che genera quel messaggio di errore sia simile a questo:

throw new ConfigurationException("No service named" + serviceName + " is available");

Altri suggerimenti

Secondo il documentazione collegato da @arnonym, questa eccezione è alquanto fuorviante.Nel primo tentativo di trovare il servizio viene lanciata e catturata una ConfigurationException.Viene registrato a livello DEBUG dalla classe ConfigurationException.Quindi viene effettuato un altro tentativo utilizzando un metodo diverso per trovare il servizio che potrebbe quindi avere esito positivo.La soluzione alternativa a questo problema è semplicemente modificare il livello di registro sulla classe ConfigurationException in INFO nel file log4j.properties:

log4j.logger.org.apache.axis.ConfigurationException = INFO

È un'eccezione utilizzata dal flusso di controllo di Axis.

http://wiki.apache.org/ws/FrontPage/Axis/DealingWithCommonExceptions--> org.apache.axis.ConfigurationException:Nessun servizio denominato XXX è disponibile

Questo è come appare il mio codice.Sembra che funzioni bene.Stai utilizzando un localizzatore di servizi o stai semplicemente creando il tuo servizio?

SomeServiceLocator locator = new SomeServiceLocator();
SomeService service = null;
try
{
    service = locator.getSomeServiceImplPort();
}
catch (ServiceException e)
{
    e.printStackTrace();
}

Non so quale versione di Axis stai utilizzando, ma sto utilizzando Axis2 sia per il server che per il client e Java2WSDL crea un endpoint predefinito per il servizio su localhost.Se crei lo stub del client con WSDL2Java, il costruttore predefinito dello stub punterà quindi a localhost.Se il servizio si trova su un altro endpoint è necessario utilizzare il costruttore con l'endpoint come parametro...Forse il problema non è affatto questo ma, come detto in altre risposte, senza il WSDL che stai utilizzando come input WSDL2Java è difficile dirlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top