Deploying with a partial WSDL

In accordance with the J2EE 1.4 specification, you can occasionally deploy without a complete WSDL file. If done, you must complete some of the service definition. As the following examples illustrate.

Changing the location (SOAP address) for the client:

<webServiceRef configName="${this.config.name}" package="${this.package.name}" serviceRefName="service/HiWS" merge="false">
   ...other props
   <service name="HiWS">
   <port name="HiWSSEIPort"   
   location="http://mymachine:8000/it/worked"/>
   </service>
   ... </webServiceRef>

Completing a partial or incomplete WSDL file:If your WSDL file does not define a service name, you need to specify service name, port name, binding, and location. For example:

<webServiceRef configName="${this.config.name}" package="${this.package.name}" serviceRefName="service/HiWS" merge="false">
      ... other props
    <property name=wsdlLocation" value="c:/myspot/mywsdl.wsdl"/>  
    <service name="HiWS">
        <port name="HiWSSEIPort" binding="tns:HiWSSEIBinding" location="http://mymachine:8000/it/worked"/>
    </service>
      ...</webServiceRef>

This example is for a Web application that contains a Web service client with some WSDL completion values:

<?xml version="1.0"?>
<project name="webapp-hiwsclient" default="configure">
  <property name="this.config.name" value="webapp-hiwsclient"/>
  <import file="ant-config-tasks.xml"/>
  <import file="default-config-targets.xml"/>
  <property name="this.package.name" value="hiwsclient"/>
  <import file="${this.config.name}-user.xml" optional="true"/>
  <property name="djc.verbose" value="false"/>
  <property name="web.accessControl" value="default"/>
  <property name="web.allowedPorts" value="all"/>
  <property name="web.rolePrefix" value="hiwsclient"/>
  <property name="web.contextPath" value="HiWSClient"/>
  <property name="web.virtualHost" value=""/>
  <property name="web.logExceptions" value="true"/>
  <property name="web.enableProfiling" value="true"/>
  <property name="web.enableTracing" value="true"/>
  <property name="web.threadMonitor" value="default"/>
  <property name="web.javacTarget" value="1.4"/>
  <property name="web.deployDir" value="${djc.home}/deploy/webapps/hiwsclient"/>
  <property name="web.classDir" value="${web.deployDir}/WEB-INF/classes"/>
  <property name="web.compileJspDir" value="${web.deployDir}/WEB-INF/compiled_jsps"/>
  <path id="web.classpath.path.id">
    <pathelement path="${web.classDir}"/>
    <!-- WEB-INF/lib may not be present in the war, ANT will complain if lib is included in the dir= attribute-->
    <fileset dir="${djc.home}/deploy/webapps/hiwsclient/WEB-INF" includes="lib/*.jar lib/*.zip" casesensitive="no"/>
    <fileset dir="${djc.home}/lib/default/ext" includes="*.jar *.zip" casesensitive="no"/>
    <fileset dir="${djc.home}/lib/ext" includes="*.jar *.zip" casesensitive="no"/>
  </path>
  <pathconvert pathsep="${path.separator}" property="web.classPath" refid="web.classpath.path.id"/>
  <property name="jca.connectionFactory" value="default"/>
  <property name="sql.dataSource" value="default"/>
  <target name="configure-default">
    <echo level="info" message="configure: webapp-hiwsclient"/>
    <setProperties component="web.components.hiwsclient.HiServlet" merge="false">
      <threadMonitor name="${web.threadMonitor}"/>
      <transaction type="BeanManaged"/>
    </setProperties>
    <setProperties component="web.components.hiwsclient.JspServlet" merge="false">
      <threadMonitor name="${web.threadMonitor}"/>
      <transaction type="BeanManaged"/>
    </setProperties>
    <setProperties package="web.components.hiwsclient" merge="false">
      <property name="contextPath" value="${web.contextPath}"/>
      <property name="virtualHost" value="${web.virtualHost}"/>
      <accessControl type="${web.accessControl}"/>
      <logExceptions enable="${web.logExceptions}"/>
      <profilePublicMethods enable="${web.enableProfiling}"/>
      <tracePublicMethods enable="${web.enableTracing}"/>
      <classLoader name="web.components.hiwsclient"/>
      <permitAccess ports="${web.allowedPorts}"/>
      <property name="rolePrefix" value="${web.rolePrefix}"/>
      <!-- WebServiceRef: java:comp/env/service/HiWS-->
      <bind name="java:comp/env/service/HiWS" webService="web.components.hiwsclient.service.HiWS"/>
    </setProperties>
    <webServiceRef configName="${this.config.name}" package="${this.package.name}" serviceRefName="service/HiWS" merge="false">
      <property name="archiveFile" value="HiWSClient.war"/>
      <property name="deploymentDescriptorFile" value="M:\target1.4\deploy\webapps\hiwsclient\WEB-INF\web.xml"/>
      <property name="deploymentDescriptorType" value="webapp"/>
      <property name="wsdlLocation" value="~/deploy/webapps/hiwsclient/WEB-INF/wsdl/HiWS.wsdl"/>
      <property name="localWsdlLocation" value="~/deploy/webapps/hiwsclient/WEB-INF/wsdl/HiWS.wsdl"/>
      <service name="HiWS">
        <port name="HiWSSEIPort" binding="tns:HiWSSEIBinding" location="http://mymachinename:8000/it/worked"/>
      </service>
      <property name="serviceInterface" value="org.me.hi.HiWS"/>
      <property name="jaxrpcMappingFile" value="~/deploy/webapps/hiwsclient/WEB-INF/HiWS-mapping.xml"/>
      <property name="serviceName" value="HiWS"/>
    </webServiceRef>
    <setProperties classLoader="web.components.hiwsclient" merge="false">
      <property name="classPath" value="~/deploy/webapps/hiwsclient/WEB-INF/classes;~/deploy/webapps/hiwsclient/WEB-INF/lib/**"/>
      <property name="resolveFirstBySystem" value="org.apache.commons.logging.**,javax.xml.parsers.**, org.w3c.dom.**, org.xml.sax.**"/>
      <property name="parentFirst" value="false"/>
      <property name="parentClassLoader" value="lib.default-ext"/>
    </setProperties>
  </target>
  <target name="recompile-default">
    <echo level="info" message="recompile: webapp-hiwsclient"/>
    <rewriteWsdlAddress webService="web.components.hiwsclient.service.HiWS"/>
    <djc package="web.components.hiwsclient"/>
    <javac target="${web.javacTarget}" source="${web.javacTarget}" srcdir="${djc.home}/genfiles/java/src" destdir="${web.classDir}" 
      classpath="${web.classPath}" 
      includes="web/components/hiwsclient/**"/>
  </target>
  <target name="refresh-default">
    <echo level="info" message="refresh: webapp-hiwsclient"/>
    <refresh module="webapp-hiwsclient"/>
  </target>
  <target name="deploy-default">
    <echo level="info" message="deploy: webapp-hiwsclient"/>
  </target>
  <target name="undeploy-default">
    <echo level="info" message="undeploy: webapp-hiwsclient"/>
    <delete file="${djc.home}/Repository/Instance/com/sybase/djc/util/DjcClassLoader/web.components.hiwsclient.properties"/>
    <delete file="${djc.home}/Repository/Instance/com/sybase/djc/ws/client/WebService/web.components.hiwsclient.service.HiWS.properties"/>
    <unload module="webapp-hiwsclient"/>
  </target>
</project>

It is also possible to point at a different WSDL file, perhaps one with corrected addresses or ports. The property for this is:

<property name="wsdlLocation" value="<wsdllocation>"/>

For example:

<property name="wsdlLocation" value="~/deploy/appclients/ggl5497.usv8202/META-INF/wsdl/TestsServicePartial.wsdl"/>

Note ~deploy refers to the servers deploy directory.