# Webservice (Annotation)



## Kirro (10. Mai 2011)

Hallo Leute,

ich bin seit einiger Zeit daran einen Webservice zu programmieren und alles klappt auch soweit, dank Tutorials.

Nur ich habe ein paar Verständnis-Probleme insbesondere bei den Annotationen und zwar folgende:

@Webservice bietet noch die Möglichkeit: name, servicename und targetnamespace zu nennen!

Was genau bewirken die? und was muss ich genau reinschreiben?

@SOAPBinding(style??) 
Dort gibt es einmal RPC  und einmal Dokument...wo drin ist der unterschied? wann benutzt man was?
wikipedia hat mir da leider auch nicht so weitergeholfen 


und eine weitere Frage habe ich da noch:
und zwar generiere ich mit wsimport meine client-dateien! Wenn man den Webservice aber nun auf einen anderen Server deployed, muss ich dann die client-dateien noch generieren lassen mittels wsimport?

Danke für eure antworten

gruß

kirro


----------



## dzim (10. Mai 2011)

Beispiel:


```
@WebService(targetNamespace = "http://my-namespace/1.0", name = "DbServicePort")
public interface DbService {
}

@WebService(endpointInterface = "example.DbService", serviceName = "DbService", portName = "DbServicePortName", targetNamespace = "http://www.ipoque.com/schema/pfs/web/1.0")
public class DbServiceImpl implements DbService {
}
```

"name" - ist der interne Name des Servives, wird später auch als Interface für den Client verwendet
"portName" - ist, glaube ich, der Name der Implementierung des Ports
"serviceName" zielt auf den Pfad im App-Server ab, also worunter du den Service erreichst
"targetNamespace" - nun ja, schau dir mal XMLs allgemein an, die können alle so was haben...

(Bitte berichtigt mich, wenn ich was falsches sage, denn ich verwende es mehr aus gewohnheit und habe mir darüber nie wirklich Gedanken gemacht...)

SOAPBinding - k.A.

Ich glaube das prinzipiell der Pfad zu deinem Server, wenn du mit wsimport die Client-Klassen generierst, als default eingetragen werden.
Aber: Es wird auch ein Konstruktor generiert, mit dem du deine eigenen URLs angeben kannst. Also:

```
DbService service = new DbService(wsdlUrl, new QName(SERVICE_TARGET_NAMESPACE, serviceName));
DbServicePort port = service.getDbServicePortName();
```
An dem Beispiel siehst du auch in etwa, wo die Annotationen hin verschwinden.

Greets,
Daniel


----------



## Kirro (10. Mai 2011)

danke ich glaube hat mir weitergeholfen...


----------

