Create a gist now

Instantly share code, notes, and snippets.

Embed
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

This comment has been minimized.

Show comment
Hide comment
@archanmishra

archanmishra May 11, 2015

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.

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

This comment has been minimized.

Show comment
Hide comment
@LipikaM

LipikaM Mar 21, 2017

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

LipikaM commented Mar 21, 2017

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

@anchoo2kewl

This comment has been minimized.

Show comment
Hide comment
@anchoo2kewl

anchoo2kewl Jul 12, 2017

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.

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