# WebService: mehrere methoden mit demselben Namen



## Guest (3. Okt 2008)

Ist es nicht möglich innerhalb eines Webservices zwei Methoden anzubieten mit demselben Namen aber natürlich unterschiedlichen Signaturen?
Bekomme immer eine Fehlermeldung das eine Methode mit diesem Namen bereits existiert...


----------



## foobar (3. Okt 2008)

Mit welchem Framework? Poste mal die Meldung.


----------



## Guest (4. Okt 2008)

Mit Spring und Apache CXF, hier der Stacktrace:



> org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'articleService': Invocation of init method failed; nested exception is javax.xml.ws.WebServiceException: java.lang.IllegalArgumentException: An operation with name [{http://service.myProject.de/}newArticlePrices] already exists in this service
> Caused by: javax.xml.ws.WebServiceException: java.lang.IllegalArgumentException: An operation with name [{http://service.myProject.de/}newArticlePrices] already exists in this service
> at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:267)
> at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:201)
> ...



Solange ich den Service nicht als WebService deklariere geht es. Ebenso wenn ich der zweiten Operation einen anderen Namen gebe, ist also kein Problem auf Code-Ebene.

Die Signaturen:
void newArticlePrices(Integer,ArticlePrice)
void newArticlePrices(String,ArticlePrice)
Habe auch testweise die Signatur der zweiten Methode noch weiter verändert indem ich als weiteren Parameter ein int drangehangen habe, aber ebenfalls ohne Erfolg.

Wie die Fehlermeldung schon sagt interessiert aber scheinbar die Signatur nicht und auch nicht die Anzahl der Parameter sondern nur der Name.


----------



## Guest (4. Okt 2008)

Hab jetzt herausgefunden das SOAP keine Unterstützung für überladene Methoden anbietet und dies daher nur durch das Framework gelöst werden kann.
Bei Axis2 ist es wohl möglich, bei CXF scheinbar nicht, zumindest habe ich keine Infos dazu gefunden...

Es soll wohl auch das Statement bei WS-I oder so geben das "überladene Methoden = evil" sind und empfohlen wird dies nicht zu benutzen auch wenn das Framework dies ermöglicht.  :roll: 
Da wird mir wohl nichts anderes übrig bleiben als die Methodennamen entsprechend anzupassen, wird zwar etwas länglich aber geht wohl nicht anders...


----------



## Wildcard (5. Okt 2008)

In BPEL ist Partner/Porttype/Operation die Signatur. In deinem Fall hättest du 2 Operations mit dem gleichen Partner und Porttype, die sich nur durch die Message unterscheiden und das ist ungünstig.


----------

