How to manually deploy a web service on Tomcat 6?
Asked Answered
L

5

32

I'm learning how to develop SOAP web services with Java.

So far now I've been following this excellent tutorial

http://web.archive.org/web/20120626005333/http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/

It all goes well, I have my web service working from the command line with it's embedded server and then, with the help of NetBeans I deployed it on Tomcat.

I'd like to know the steps to manually deploy it on Tomcat, in order to learn how it's done and because I don't like depending on an IDE.

I mean, I'd like to know how everything could be done from the command line and a text editor.

I've also found this link that explains how to manually deploy a servlet to Tomcat,

http://linux-sxs.org/internet_serving/c292.html

but I couldn't find any article telling how to deploy a web service.

Thanks a lot.

Lepage answered 24/3, 2010 at 21:29 Comment(2)
For some reason, probably stupid oracle didn't maintained all resources after switching the domain, the link posted does not work any more. You can follow the following link. Might not be as useful as the above one but is certainly very good. java-forums.org/blogs/web-service/…Pacifism
@Pacifism Yeah, there are tons of Sun's web pages not migrated properly. But for such cases one can use Wayback Machine. I updated the OP's link to point to the archived page from Wayback Machine.Handful
L
39

How to MANUALLY build and deploy a jax-ws web service to tomcat

I was trying to figure out how to MANUALLY build and deploy a web service for learning pourposes.

I began with this excellent article

http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/ (new URL: http://www.oracle.com/technetwork/articles/javase/jax-ws-2-141894.html)

The idea was to do the whole thing using only a notepad and the command line.

The only way I could achieve was by deploying a web service with netbeans, and then having a look at the war generated file at \dist\.war (it's just a zip file, you can open it with 7zip)

I leave this in case anybody is interested and for documentation purposes...

If anybody knows an easier way please let me know!!!

tested on:

C:\tomcat6\bin>version
Server version: Apache Tomcat/6.0.26
Server built:   March 9 2010 1805
Server number:  6.0.26.0
OS Name:        Windows XP
OS Version:     5.1
Architecture:   x86
JVM Version:    1.6.0_18-b07
JVM Vendor:     Sun Microsystems Inc.

saludos

sas

1. create the following dir c:\java\src\ws

2. create thew following file c:\java\src\ws\Adder.java

// c:\java\src\ws\Adder.java
package ws;
import javax.jws.WebService;

@WebService
public class Adder {
 public double add( double value1, double value2 ) {
  return value1 + value2;
 }
}

3. standing at c:\java\src\ execute

c:\java\src> javac ws\Adder.java

file c:\java\src\ws\Adder.class will be generated

4. create the following directory structure with the following files

c:\tomcat6\webapps\adder_ws

META-INF
  context.xml
WEB-INF
  classes
    ws
      Adder.class
  lib
    activation.jar
    webservices-api.jar
    webservices-extra.jar
    webservices-extra-api.jar
    webservices-rt.jar
    webservices-tools.jar
  sun-jaxws.xml
  web.xml

5. copy compiled file

copy c:\java\src\ws\Adder.class c:\tomcat6\webapps\adder_ws\WEB-INF\classes\ws\Adder.class

6. c:\tomcat6\webapps\adder_ws\META-INF\context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/adder_ws"/>

7. c:\tomcat6\webapps\adder_ws\WEB-INF\web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <listener>
        <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>Adder</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Adder</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>
<!-- not needed
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
-->
</web-app>

8. Config WEB-INF\sun-jaxws.xml

file : c:\tomcat6\webapps\adder_ws\WEB-INF\sun-jaxws.xml

<?xml version="1.0" encoding="UTF-8"?>
<endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
  <endpoint implementation="ws.Adder" name="Adder" url-pattern="/add"/>
</endpoints>

9. Copy libraries

files at c:\tomcat6\webapps\adder_ws\WEB-INF\lib

copy netbeans files from

[netbeans dir]\enterprise\modules\ext\metro\*.*

and

[netbeans dir]\ide\modules\ext\jaxb\activation.jar

10. restart apache

Shutdown : c:\tomcat6\bin\shutdown.bat

Startup : c:\tomcat6\bin\startup.bat

11. Test

Open a web browser and go to http://localhost:8080/adder_ws/add?wsdl you can also use a tool like soapui (http://www.soapui.org/) to test the web service

that's it, I guess now I'll have a look at the way eclipses does it...

Lepage answered 28/3, 2010 at 19:16 Comment(3)
In a world where most people only want to know how to wizardy-click their way to a solution, it is SOOO nice to find someone else who wants to FIRST know how to do it with vi and the command line! Do you accept donations? (Kidding.)Porkpie
One bit of information. Your solution worked for me but because I don't use Netbeans I did not have the jars you list and had to use a different set of jars which I got from the Metro website. The list of jars and where to get them is in the following question/answer. Be sure to read my comment because the answerer left one jar out, and also I provide the link to download the jars. #6586448Porkpie
nice guide, but actually I'm havving some issues. I created a EE 7 /ear project and my desired server is WildFly 8.2, I'm getting the next errors: 17:34:00,652 INFO [javax.enterprise.resource.webservices.jaxws.server.http] (MSC service thread 1-8) WSSERVLET12: JAX-WS context listener initializing 17:34:00,722 SEVERE [javax.enterprise.resource.webservices.jaxws.server.http] (MSC service thread 1-8) WSSERVLET11: failed to parse runtime descriptor: runtimeOverheat
L
4

here's another useful article

it kind of answer my very own question

http://java.dzone.com/articles/jax-ws-deployment-five-minute

Lepage answered 1/4, 2010 at 4:31 Comment(0)
W
4

Following articles has step by step guide to manually build and deploy JAX-WS web services. It uses Ant as build tool.

Building JAX-WS Web service

Wingate answered 13/4, 2010 at 10:49 Comment(0)
A
3

I would expect the deployable to be the same for a web service and a servlet. Namely, a .war file. So you should be able to deploy it in the same fashion.

Adkinson answered 24/3, 2010 at 21:32 Comment(1)
allright, I just need to find out how to get the whole thing inside a war file...Lepage
H
2

I see that nobody has mentioned JAX-WS Tutorials from Mkyong.com.

In the "JAX-WS Security in Tomcat" section on the "JAX-WS Tutorial" page, there is a short, to the point and with pictures tutorial, just what the OP wanted:
Deploy JAX-WS web services on Tomcat

Handful answered 21/7, 2013 at 22:21 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.