# Spring: Bean als Webservice freigeben



## miketech (2. Okt 2008)

Hi zusammen,

mal eine Frage: Ich habe ein Spring eine Bean "PersonService". Diese Bean wird von anderen Spring-Komponenten genutzt. Nun möchte ich diese Funktionalität aber noch als Webservice bereitstellen.

Muss ich jetzt hierfür mit Axis oder Spring Webservices jeweils einen Wrapper Dienst schreiben? D.h. einen PersonWsService, der dann die notwendigen Schnittstellen bereitstellt und im Grunde jedes mal den Request nur weiter an den lokalen Dienst leitet? Oder kann ich nicht irgendwo einfach nur konfigurieren: Bean PersonService bitte als WS bereitstellen.

Sonst hätte ich das am besten als EJB schreiben können, damit wäre das gegangen.

Gruß

Mike


----------



## foobar (2. Okt 2008)

Du kannst jede Bean in Spring ganz einfach als Webservice exportieren:

applicationConfig.xml

```
<jaxws:endpoint  id="personService"  implementor="myproject.impl.PersonImpl"  address="/PersonService" >
</jaxws:endpoint>
```

Die Bean bruacht dann noch eine Annotation:


```
@WebService(endpointInterface = "myproject.PersonIF")
public class PersonImpl implements PersonIF
{
    public String sayHi(String text)
    {
        return "Hello " + text; //$NON-NLS-1$
    }
}
```

das Interface sieht dann ungefähr so aus:


```
@WebService
public interface PersonIF 
{
    String sayHi(String text);
}
```

Es gibt auch einige ganz nett ClientAPIs, die unteranderem mit Proxies arbeiten. Damit kannste dann einfach auf der Clientseite das PersonIF nehmen und den entfernten Webservice aufrufen. Das ist dann genauso bequem wie RMI nur eben als Webservice.


----------



## miketech (2. Okt 2008)

Hallo,

danke für Deine Antwort. Was wird dann als Webservice-Framework genutzt? Axis? Spring-WS? Oder ist das unabhängig davon?

Gruß

Mike


----------



## foobar (2. Okt 2008)

Ich finde CXF am besten, weil man damit flexibel ist und es hier auch die besten IMHO Clientapis gibt.

http://cxf.apache.org/

Axis kann man in Spring aber auch verwenden. Wems gefällt ;-)


----------



## ARadauer (3. Okt 2008)

hier wirds nochmal ausführlicher erklärt

http://cwiki.apache.org/CXF20DOC/writing-a-service-with-spring.html


----------



## miketech (6. Okt 2008)

D.h. ich kann das Webservice Framework noch unabhängig davon wählen?

Gruß

Mike


----------



## foobar (6. Okt 2008)

CXF basiert auf Spring, wenn du CXF nutzt hast du automatisch auch Spring.
Du kannst aber auch nur die benötigten Jars aus CXF deiner Springanwendung hinzufügen.


----------



## miketech (6. Okt 2008)

Hi,

ne ich meinte: Kann ich nun auch Axis nehmen, um Spring Bestandteile als Webservices freizugeben? D.h. ich konfiguere Spring, dass es Axis verwendet? Oder geschieht das automatisch, wenn ich die JAX-WS Annotationen verwende und die Axis JARs einbinde?

Gruß

Mike


----------



## foobar (6. Okt 2008)

Axis kannste genauso in Spring verwenden.


----------



## miketech (6. Okt 2008)

Oki, danke! 

Mike


----------

