<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta name="copyright" content="Copyright (c) 2000, 2008 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html. Contributors: IBM Corporation - initial API and implementation" />
<meta name="DC.rights.owner" content="(C) Copyright 2000, 2008" />
<meta content="public" name="security" />
<meta content="index,follow" name="Robots" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta content="task" name="DC.Type" />
<meta name="DC.Title" content="Creating a Web service from a Java bean using the Apache Axis1 runtime environment" />
<meta name="abstract" content="The Web Service wizard assists you in creating a new Web service, configuring it for deployment, and deploying the Web service to a server. Once your Web service is deployed, the wizard assists you in generating the client proxy and sample application to test the Web service. When you have completed testing, you can publish your Web service to a UDDI Business Registry using the Export wizard." />
<meta name="description" content="The Web Service wizard assists you in creating a new Web service, configuring it for deployment, and deploying the Web service to a server. Once your Web service is deployed, the wizard assists you in generating the client proxy and sample application to test the Web service. When you have completed testing, you can publish your Web service to a UDDI Business Registry using the Export wizard." />
<meta content="Axis runtime environment, Web services, Java beans, creating a Web service" name="DC.subject" />
<meta content="Axis runtime environment, Web services, Java beans, creating a Web service" name="keywords" />
<meta scheme="URI" name="DC.Relation" content="../topics/caxistover.html" />
<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/tasks/toverws.html" />
<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.html" />
<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/ref/rwsdl.html" />
<meta content="XHTML" name="DC.Format" />
<meta content="twsbeana" name="DC.Identifier" />
<meta content="en-us" name="DC.Language" />
<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
<title>Creating a Web service from a Java bean using the Apache Axis1
runtime environment</title>
</head>
<body id="twsbeana"><a name="twsbeana"><!-- --></a>


<h1 class="topictitle1">Creating a Web service from a Java bean using the Apache Axis1 runtime
environment</h1>




<div><p>The Web Service wizard assists you in creating a new Web service,
configuring it for deployment, and deploying the Web service to a server.
Once your Web service is deployed, the wizard assists you in generating the
client proxy and sample application to test the Web service. When you have
completed testing, you can publish your Web service to a UDDI Business Registry
using the Export wizard.</p>

<div class="p"><div class="p">Prerequisites:<ol>
<li id="twsbeana__createtomcatlink"><a name="twsbeana__createtomcatlink"><!-- --></a>If you are using the Apache Jakarta Tomcat servlet
container as your server, you must install it, configure an instance of it,
and create a Web project targeted to it as described in <a href="ttomcatserv.html">Creating an Apache Tomcat server and Web project</a></li>

<li>Create or import a bean into the Java™ source folder of the Web project. To
import, select the <strong>Java Resources: src</strong> folder, and from the file menu
select <span class="menucascade"><span class="uicontrol">Import</span> &gt; <span class="uicontrol">General</span>
 &gt; <span class="uicontrol">File System</span></span> and browse to where your
package is.</li>

</ol>
</div>
</div>

<div class="section">To create a Web service from a bean using the Apache Axis1 runtime
environment:</div>

<ol>
<li class="stepexpand"><span>Switch to the Java EE perspective (<span class="uicontrol">Window &gt; Open Perspective
&gt; Java EE</span>).</span></li>

<li class="stepexpand"><span>In the Project Explorer view, select the bean that you created
or imported into the source folder of your Web project.</span></li>

<li class="stepexpand"><span>Click  <span class="uicontrol">File &gt; New &gt; Other</span>.</span> Select<span class="uicontrol">Web
Services</span> in order to display the various Web service wizards.
Select the  <span class="uicontrol">Web Service</span> wizard. Click  <span class="uicontrol">Next</span>.
</li>

<li class="stepexpand"><span>Web Services page: select  <span class="uicontrol">Bottom up Java bean Web service</span> as
your Web service type, and enter the URI to the WSDL, WSIL, or HTML file that
will be used to generate the service.</span>
<a name="twsbeana__createstep4ul"><!-- --></a><ol type="a" id="twsbeana__createstep4ul">
<li class="substepexpand"><span>Select the stages of Web services development that you want
to complete using the slider:</span> <ul>
<li>Develop: this will develop the WSDL definition and implementation of the
Web service. This includes such tasks as creating the modules which will contain
the generated code, WSDL files, deployment descriptors, and Java files when
appropriate.</li>

<li>Assemble: this ensures the project that will host the Web service or client
gets associated to an EAR when required by the target application server.</li>

<li>Deploy: this will create the deployment code for the service.</li>

<li>Install: this will install and configure the Web module and EARs on the
target server.</li>

<li>Start: this will start the server once the service has been installed
on it. The server-config.wsdd file will be generated.</li>

<li>Test: this will provide various options for testing the service, such
as using the Web Service Explorer or sample JSPs.</li>

</ul>
</li>

<li class="substepexpand"><span>Select your server: the default server is displayed. If you
want to deploy your service to a different server click the link to specify
a different server.</span></li>

<li class="substepexpand"><span>Select your runtime: the default runtime is displayed. If you
want to deploy your service to a different runtime click the link to specify
a different runtime.</span></li>

<li class="substepexpand"><span>Select the service project: the project containing the project
selected in your workspace is displayed. To select a different project and
EAR click on the project link.</span> Ensure that the project selected
as the Client Web Project is different from the Service Web Project, or the
service will be overwritten by the client's generated artifacts.</li>

<li class="substepexpand"><span>If you want to create a client, select the type of proxy to
be generated and repeat the above steps for the client.</span></li>

<li class="substepexpand"><span>Publish the Web service: this will launch the Web Services Explorer
to publish your Web service to a UDDI registry.</span></li>

<li class="substepexpand"><span>Monitor the Web service: this will send the Web service traffic
through the TCP/IP Monitor, which allows you to watch the SOAP traffic generated
by the Web service and to test this traffic for WS-I compliance. Alternately
you can manually set up a TCP/IP monitor as described in <a href="../../org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.html">Using the TCP/IP Monitor to test Web services</a></span></li>

</ol>

</li>

<li class="stepexpand"><span>Web Service Java Bean Identity page: the Web service
WSDL name will be listed.</span> You have the following options:<ul>
<li>Select the methods to expose.</li>

<li>Select the encoding style. RPC/Encoded is the recommended encoding style
for the Axis runtime environment. This encoding method is not WS-I compliant.</li>

<li>Select if you want to customize the package to namespace mappings.</li>

</ul>
Click  <span class="uicontrol">Next</span></li>

<li class="stepexpand"><span>Web Service Package to Namespace Mappings page: if you selected
 <span class="uicontrol">Define custom mapping for package to namespace</span> on
the previous panel, you can enter your custom mapping pairs on this panel
by clicking  <span class="uicontrol">Add</span>. Alternately, you can click  <strong>Import</strong> to
import custom mapping pairs from a  <tt class="sysout">.properties</tt> file.
The content of the properties file must be of the format  <samp class="codeph"><var class="varname">package=namespace</var></samp>. </span>
 You will need to escape some special characters in the properties files.
 For example <samp class="codeph">somePackage=http://someNamespace</samp> should be <samp class="codeph">somePackage=http\://someNamespace</samp>.
 Otherwise, the colon (:) would be treated as delimiter resulting in trying
to map <samp class="codeph">somePackage</samp> to <samp class="codeph">http</samp>.
</li>

<li class="stepexpand"><span>Web Service Test page: If you selected to test the Web service,
select the test facility for the generated Web service.</span> This will
open the Web service in the Web Services Explorer. Select the operation you
want to test, enter the required information, and click<span class="uicontrol">Go</span>.
The result will display in the Status pane. Click  <span class="uicontrol">Next</span>.
</li>

<li class="stepexpand"><span>Web Service Proxy page: if you have selected to generate a proxy,
select if you want to customize the package to namespace mappings.</span></li>

<li class="stepexpand"><span>Web Service Client Test page: Use this page to select the following
options: </span>
<ol type="a">
<li><span>Select your test facility. You can test the generated proxy
in the Web Service Explorer, or you can generate a sample Web service JSP.</span>
</li>

<li><span>If you selected to test the proxy through a JSP, you can select
the folder where the JSP will be located, and you can select the methods that
will be included in the JSP.</span></li>

<li><span>Select  <span class="uicontrol">Run test on server</span> to start the
server for you automatically.</span></li>

</ol>

</li>

<li class="stepexpand"><span>Web Service Publication page: Select whether or not you want to
publish this Web service to a UDDI registry. Click <span class="uicontrol">Finish</span>. </span>
 Note: you may see a warning stating <samp class="codeph">Error in generating WSDL
from Java. ClassNotFound: &lt;bean name&gt;</samp>. This error can be safely
ignored.</li>

</ol>

<div class="section" id="twsbeana__axiswscreateresult"><a name="twsbeana__axiswscreateresult"><!-- --></a><div class="p">After the Web service has been created,
the following may occur depending on the options you selected: <ul>
<li>If you have selected to test the generated proxy using Web service JSPs,
the proxy is launched in a Web browser at the following URL: http://localhost: <var class="varname">port</var>/ <var class="varname">WebProject</var>Client/sample<em>BeanName</em>/ <var class="varname">WebServiceName</var>/TestClient.jsp You can use
this sample application to test the Web service by selecting a method, entering
a value for the method, and clicking  <span class="uicontrol">Invoke</span>. The result
of the method will display in the results pane.</li>

<li>If you have selected to test the Web service using the Web Services Explorer,
the Explorer will open. Select the operation you want to test, enter the required
information, and click  <strong>Go</strong>. The result will display in the Status pane.</li>

<li>If you have selected to publish the Web service, the Web Services Explorer
is launched displaying the page required to publish your Web service. Follow
the instructions in  <var class="varname">Publishing the Web service</var> to complete
this task.</li>

</ul>
</div>
</div>

<div class="section"><p> <span class="uicontrol">Important:</span> If your methods contain types,
not supported by the sample, such as arrays, indexed properties, and collections,
the methods will be omitted from the sample and you will receive a warning
message.</p>
</div>

</div>

<div><div class="relconcepts"><strong>Related concepts</strong><br />
<div><a href="../topics/caxistover.html" title="This runtime environments is for users who prefer to develop for the open Apache Axis platform.">Creating Web services with the Apache Axis1 runtime environment</a></div>
</div>

<div class="linklist"><strong>Related Concepts</strong><br />

<div><a href="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html"> Tools for Web services development</a></div>
<div><a href="../../org.eclipse.jst.ws.doc.user/concepts/cws.html">Web services development</a></div></div>

<div class="linklist"><strong>Related Tasks</strong><br />

<div><a href="../../org.eclipse.jst.ws.doc.user/tasks/toverws.html"> Developing Web services</a></div>
<div><a href="../../org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.html"> Using the Web Services Explorer</a></div></div>

<div class="linklist"><strong>Related Reference</strong><br />

<div><a href="../../org.eclipse.jst.ws.doc.user/ref/rwsdl.html">WSDL documents</a></div></div>
</div>

</body>
</html>