views:

1035

answers:

4

I'm learning how to develop soap web services with java.

So far now I've been following this excelente tutorial

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 embeded 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

saludos

sas

+1  A: 

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.

Brian Agnew
allright, I just need to find out how to get the whole thing inside a war file...
opensas
A: 

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/

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\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"&gt;
    <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. 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"&gt;
  <endpoint implementation="ws.Adder" name="Adder" url-pattern="/add"/>
</endpoints>

-9. 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

c:\tomcat6\bin\shutdown.bat

c:\tomcat6\bin\startup.bat

-11. 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...

opensas
A: 

here's another useful article

it kind of answer my very own question

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

opensas
+1  A: 

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

Vinod Singh