Skip to content

Instantly share code, notes, and snippets.

@dmorgantini
Created August 13, 2012 14:37
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dmorgantini/3341293 to your computer and use it in GitHub Desktop.
Save dmorgantini/3341293 to your computer and use it in GitHub Desktop.
Use SOAP with dropwizard
package com.example.helloworld.resources;
import javax.jws.WebMethod;
@javax.jws.WebService(
name = "AddNumbersPortType",
serviceName = "AddNumbersService",
targetNamespace = "http://duke.example.org")
@javax.jws.soap.SOAPBinding(
style = javax.jws.soap.SOAPBinding.Style.DOCUMENT,
use = javax.jws.soap.SOAPBinding.Use.LITERAL,
parameterStyle = javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED)
public class AddNumbersService {
@WebMethod
public int Add(int a, int b) {
return a + b;
}
}
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.6-2</version>
</dependency>
public class SoapBundle implements Bundle {
@Override
public void initialize(Environment environment) {
environment.addServlet(new com.sun.xml.ws.transport.http.servlet.WSServlet(), "/SOAP/*");
environment.addServletListeners(new com.sun.xml.ws.transport.http.servlet.WSServletContextListener());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<endpoints
xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version="2.0">
<endpoint
name="HelloWorld"
implementation="com.example.helloworld.resources.AddNumbersService"
url-pattern="/SOAP/add"/>
</endpoints>
@archanmishra
Copy link

Hi,
Can you please point me to resource/documentation on adding the jax-ws.xml to the dropwizard project.
Since I am getting WEB-INF/jax-ws.xml not found error on my app startup.

@LipikaM
Copy link

LipikaM commented Mar 21, 2017

Hi,
Its giving this error: /WEB-INF/sun-jaxws.xml missing. Can you help.

@anchoo2kewl
Copy link

The missing "/WEB-INF/sun-jaxws.xml" is caused due to the WSServletContextListener trying to fetch the URL to sunJaxWsXml. Stepping through the code got me to the ContextHandler which checks the _baseResource value, which was never set when setting the servlet.
The most important bit is to set the resource base, without which the context would never find xml file, no matter where you place the file.

I am using dropwizard 0.7.1 and I add this to the run method of my Application class.

ServletEnvironment servlet = environment.servlets();
servlet.setResourceBase("/");
servlet.addServlet("/SOAP/*", new com.sun.xml.ws.transport.http.servlet.WSServlet());
servlet.addServletListeners(new com.sun.xml.ws.transport.http.servlet.WSServletContextListener());

And then ensure /WEB-INF/sun-jaxws.xml exists in the root directory.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment