/**
* Copyright (C) 2010 Talend Inc. - www.talend.com
*/
package server;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.xml.ws.Endpoint;
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
import org.apache.cxf.jaxrs.provider.JAXBElementProvider;
public class CustomerServiceServer {
protected CustomerServiceServer() throws Exception {
}
public static void main(String args[]) throws Exception {
System.out.println("Starting Server");
// old SOAP service
com.example.customerservice.CustomerService oldImplementor =
new CustomerServiceImpl();
Endpoint.publish("http://localhost:8080/services/direct/soap", oldImplementor);
// new SOAP service
org.customer.service.CustomerService newImplementor =
new NewCustomerServiceImpl();
Endpoint.publish("http://localhost:8080/services/direct/new-soap", newImplementor);
// old REST endpoint
publishRestEndpoint(oldImplementor,
"http://localhost:8080/services/direct/rest");
// new REST endpoint
publishRestEndpoint(newImplementor,
"http://localhost:8080/services/direct/new-rest");
System.out.println("Server ready...");
Thread.sleep(50 * 60 * 1000);
System.out.println("Server exiting");
System.exit(0);
}
private static void publishRestEndpoint(Object implementor,
String address) {
JAXRSServerFactoryBean jaxrsFactory = new JAXRSServerFactoryBean();
jaxrsFactory.setAddress(address);
jaxrsFactory.setModelRef("classpath:/model/CustomerService-jaxrs.xml");
jaxrsFactory.setServiceBean(implementor);
List<Object> providers = createProviders();
providers.add(new NoCustomerExceptionMapper());
jaxrsFactory.setProviders(providers);
jaxrsFactory.create();
}
private static List<Object> createProviders() {
JAXBElementProvider provider = new JAXBElementProvider();
provider.setUnmarshallAsJaxbElement(true);
provider.setMarshallAsJaxbElement(true);
List<Object> providers = new ArrayList<Object>();
providers.add(provider);
return providers;
}
}