<?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, 2006 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, 2006" />
<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="reference" name="DC.Type" />
<meta name="DC.Title" content="Web services preferences" />
<meta name="abstract" content="Before you begin developing Web services or clients, you can optimize the workbench for Web services development by setting a variety of preferences." />
<meta name="description" content="Before you begin developing Web services or clients, you can optimize the workbench for Web services development by setting a variety of preferences." />
<meta content="Web services, setting preferences, preferences, setting for Web services" name="DC.subject" />
<meta content="Web services, setting preferences, preferences, setting for Web services" name="keywords" />
<meta scheme="URI" name="DC.Relation" content="../concepts/cws.html" />
<meta scheme="URI" name="DC.Relation" content="../concepts/cwsinwsa.html" />
<meta scheme="URI" name="DC.Relation" content="../tasks/toverws.html" />
<meta content="XHTML" name="DC.Format" />
<meta content="rwspref" 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>Web services preferences</title>
</head>
<body id="rwspref"><a name="rwspref"><!-- --></a>


<h1 class="topictitle1">Web services preferences</h1>



<div><p>Before you begin developing Web services or clients, you can optimize
the workbench for Web services development by setting a variety of preferences.</p>

<div class="section"><div class="p" id="rwspref__setprefmain"><a name="rwspref__setprefmain"><!-- --></a>To set any of the Web services preferences, follow
these steps:<ol>
<li>Click  <span class="uicontrol">Window &gt; Preferences</span> to open the Preferences
notebook.</li>

<li>Expand  <span class="uicontrol">Web services</span> or <span class="uicontrol">Web and XML</span>,
and click the preference category that you want to set</li>

<li>Select the check boxes that you want to set as the default when creating
your Web service.</li>

<li>Click  <span class="uicontrol">OK</span> to apply the changes and close the Preferences
notebook.</li>

</ol>
If you require more information on any of the options, select the option
and press  <span class="uicontrol">F1</span>.</div>
<p>Web services tools enable you
to define the following preferences:</p>
<dl>
<dt class="dlterm"><a name="rwspref__axisemitterpref"><!-- --></a>Axis Emitter</dt>

<dd>This page allows you to set the following preferences used when creating
or consuming Axis Web services.</dd>

<dd class="ddexpand"><strong>WSDL2Java</strong><ul>
<li>Generate code for all elements: By default, WSDL2Java only generates code
for those elements in the WSDL file that are referenced. For additional information
regarding how referencing works refer to the Axis reference guide: <a href="http://ws.apache.org/axis/java/reference.html" target="_blank">http://ws.apache.org/axis/java/reference.html</a></li>

<li>Emits separate Helper classes for metadata: If you select this option
WSDL2Java will create a separate helper class that contains the metadata rather
than including it in the skeleton.</li>

<li>Prefers building beans to straight arrays for wrapped XML array types:
The default behavior is to map this XML construct: <pre>&lt;element name="array"&gt;
 &lt;complexType&gt;
  &lt;sequence&gt;
   &lt;element name="item" type="xs:string"/&gt;
  &lt;/sequence&gt;
 &lt;/complexType&gt;
&lt;/element&gt;</pre>
to a Java String array (String[]). If you would rather
a specific JavaBean class (ArrayOfString) be generated for these types of
schemas, select this option. </li>

<li>Add scope to deploy.wsdd: This indicates how to deploy the server implementation.
Application uses one instance of the implementation class for all requests.
Request creates a new instance of the implementation class for each request.
Session creates a new instance of the implementation class for each session.</li>

<li>Timeout in seconds: The default is 45. Use -1 to disable the timeout.</li>

</ul>
</dd>

<dd class="ddexpand"><strong>Java2WSDL</strong><ul>
<li>Look for allowed methods in inherited class: If this option is specified,
the Java2WSDL parser will look into extended classes to determine the list
of methods to export into the WSDL file. </li>

<li>Analyze the service class for compliance to JAX-RPC before generating
code: If selected, the tools will examine the Java service class and its value
types to determine if it satisfies important requirements of the JAX-RPC specification.</li>

</ul>
</dd>


<dt class="dlterm"><a name="rwspref__popupdialogselect"><!-- --></a>Popup Dialog Selection</dt>

<dd>The Dialogs preferences enable you to determine which dialog boxes that
you want to see when running popup actions. If you have disabled any of the
dialogs by selecting "Do not show this dialog again" on the first page of
a Web services wizard, you can undo your change by clearing the check box
beside the dialog that you have chosen to hide.</dd>


<dt class="dlterm"><a name="rwspref__wsicompliance"><!-- --></a>Profile Compliance and Validation</dt>

<dd>The WS-I Compliance preferences allow you to select your level of compliance
with the WS-I Simple SOAP Binding Profile (SSBP) and WS-I Attachement Profile
(AP). Note: if you change the level of WS-I compliance while WS-I incompliances
are listed in the Task view, the Task view will not be automatically updated.
The workspace must be revalidated before the warnings will be removed from
the Task view. For more information on WS-I, refer to: <a href="http://www.ws-i.org/" target="_blank">http://www.ws-i.org/</a></dd>

<dd class="ddexpand">For validation preferences, you can choose whether or not WSDL files consumed
by the Web services wizards are validated, and whether or not the WSDL validation
must complete before the wizard will move to the next step.</dd>


<dt class="dlterm"><a name="rwspref__projtopology"><!-- --></a>Project Topology</dt>

<dd>The Project Topology preferences allow you to:<ul>
<li>Select the default client project type that the Web services wizards will
create when generating a Web service client. You can also set the order in
which the client project types will be listed in the wizard. Note that this
selection is simply a default and an alternate project type can be selected
in the wizard.</li>

<li>Select whether you want to generate the Web service and the Web service
client in the same EAR project or different EAR projects. Generating the service
and client into different EAR projects can reduce the chance of conflicts
that occur when both exist in a single EAR project, but uses more system resources.</li>

</ul>
</dd>


<dt class="dlterm"><a name="rwspref__resourcemanagement"><!-- --></a>Resource Management</dt>

<dd>The Resource Management preferences enable you to determine the file and
folder creation and overwriting defaults that you want to use when creating
your Web service.<ul>
<li>Overwrite files without warning: selecting this will allow the wizards
to overwrite any existing files in the workspace without prompting. If it
is not selected you will be prompted each time a file needs to be overwritten.</li>

<li>Create folders when necessary: selecting this enables the wizards to create
any required folders.</li>

<li>Check out files without warning: select to check out files without receiving
a warning message asking for confirmation.</li>

<li>Merge generated skeleton file: this check box is disabled by default.
 If this check box is enabled, when a skeleton file of the same name already
exists in the workspace, the newly generated skeleton file will merge with
the existing skeleton file.  Enable this to preserve code that you have already
modified in the existing skeleton files.<p>Note that when this preference
is enabled, if you change the return type of an interface, the resulting skeleton
file will have a method returning the type as defined in the new interface
but would have a method body from the original skeleton file (which would
be returning a different type).  This will result in an compilation error
that the you will have to correct manually.</p>
</li>

</ul>
</dd>


<dt class="dlterm"><a name="rwspref__scenariodefaults"><!-- --></a>Scenario Defaults</dt>

<dd>The Scenario Defaults preferences enable you to set the following scenario
defaults that you want to use when creating your Web service:<ul>
<li>which type of Web service and client you want to be selected by default.</li>

<li>which phases of the Web service lifecycle you want to complete in the
wizard.</li>

<li>if you want the Web Services Explorer to launch by default so that you
can publish your Web service to a UDDI registry.</li>

<li>if you want the Web service SOAP traffic routed through a TCP/IP monitor
so that you can monitor the SOAP packets and optionally test them for WS-I
compliance.</li>

</ul>
Note that all these defaults can be overridden in the wizard.</dd>


<dt class="dlterm"><a name="rwspref__serverandruntime"><!-- --></a>Server and Runtime</dt>

<dd>Select the server, Web service run-time environment, and J2EE version
that you want selected by default in the Web services wizard. Note that all
these defaults can be overridden in the wizard.</dd>


<dt class="dlterm"><a name="rwspref__testfacilitydefaults"><!-- --></a>Test Facility Defaults</dt>

<dd>can select whether to have the wizard automatically launch a test facility,
and you can select your preferred type of test facility</dd>


<dt class="dlterm"><a name="rwspref__wsdlfiles"><!-- --></a>WSDL files</dt>

<dd>When creating a WSDL file in the WSDL editor, you can set the default
target namespace. If you do not select to change the default, your WSDL file
will have http://tempuri.org as its target namespace.</dd>

</dl>
</div>

</div>

<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="../concepts/cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
</div>

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

<div><a href="../concepts/cwsinwsa.html" title="">Tools for Web services development</a></div></div>

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

<div><a href="../tasks/toverws.html"> Developing Web
services</a></div></div>
</div>

</body>
</html>