# Deploy Apache CXF WebService mit Eclipse



## GhostfaceCoder (24. Jun 2008)

Hallo, an alle!

Suche schon lange im Internet nach einer Lösung, aber finde einfach nicht die
richtige Beschreibung.

Ich habe folgendes Problem:

Ich möchte ein "Dynamic Web Project" unter Eclipse als Web Applikation auf einen Apache
Tomcat 5.5 deployen (als War File). Dieses Projekt stellt Web Services via Apache CXF zur Verfügung.
Die Web Services müssen aber noch mit einer Java Klasse explizit ausgeführt werden.
Sieht dann so aus:



```
import javax.xml.ws.Endpoint;
import "auf meine Service Implemtierungen";

public class Server {

	protected Server() throws Exception {
        System.out.println("Starting Server...\n");
        
        MathServiceImpl implementorMath = new MathServiceImpl();
        String addressMath = "http://localhost:9090/MathService";
        Endpoint.publish(addressMath, implementorMath);
        System.out.println("WebService: MathWebService started successfully");
        System.out.println("at http://localhost:9090/MathService?wsdl");
        
        
        PeopleServiceImpl implementorPeople = new PeopleServiceImpl();
        String addressPeople = "http://localhost:9090/PeopleService";
        Endpoint.publish(addressPeople, implementorPeople);
        System.out.println("WebService: PeopleWebService started successfully");
        System.out.println("at http://localhost:9090/PeopleService?wsdl");
        
    }

    public static void main(String args[]) throws Exception {
        new Server();
        System.out.println("\nServer started succesfully");

    }

}
```


Nur wie kann ich dem War-File mitteilen das diese Klasse automatisch ausgeführt wird,
und die WebServices zur Verfügung stehen?


Hat jemand eine Lösung für das Problem, wäre echt begeistert!  :applaus: 


Danke im Vorraus


----------



## Niki (24. Jun 2008)

Lieg ich richtig dass du die WebServices händisch registrieren musst? Wenn dem so ist bietet sich der ServletContextListener an:

```
public class StartupListener implements ServletContextListener {
    public void contextDestroyed(ServletContextEvent arg0) {
    }

    public void contextInitialized(ServletContextEvent arg0) {
      //hier deine Services registrieren
    }
}
```

Den Listener trägst du in der web.xml ein:

```
<listener>
		<listener-class>webservices.register.StartupListener</listener-class>
	</listener>
```


----------



## GhostfaceCoder (24. Jun 2008)

Erstmal danke für die Hilfe!

Hab deine Lösung implementiert funktioniert aber leider nicht.

Also ich mach das so:
Ich starte das Projekt am Server.
Dann führe ich die Server Class als Java Applikation aus,
und dann kann ich auf die genierten WSDLs zugreifen.

Sonst eine Idee?  :###


----------

