Hi all.I'm newbie to web service and Axis; i have a problem.... i have written 
a very simple Web Service; it's code is:

import java.io.Serializable;
import org.w3c.dom.Document;

public class PersonHandler implements Serializable {

    /**
     * Web service esposto. Invocato esso accetta un document e lo restituisce 
in uscita.
     * @param doc Document -il document .
     * @return Document -il document.
     */
    public Document getUserProfile(Document doc) {

        return doc;
    }
}

Well, i use Axis1.2RC2, JBuilder 2005, Windows XP Home Ed SP2, JBoss 3.2.6; i 
want ot create a web service not style RPC but Message.... JBuilder creates 
this files:
WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://websrvc.prototype.eng.it"; 
xmlns:apachesoap="http://xml.apache.org/xml-soap"; 
xmlns:impl="http://websrvc.prototype.eng.it"; 
xmlns:intf="http://websrvc.prototype.eng.it"; 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
<!--WSDL created by Apache Axis version: 1.2beta3
Built on Aug 01, 2004 (05:59:22 PDT)-->

   <wsdl:message name="getUserProfileResponse">

      <wsdl:part name="getUserProfileReturn" type="apachesoap:Document"/>

   </wsdl:message>

   <wsdl:message name="getUserProfileRequest">

      <wsdl:part name="doc" type="apachesoap:Document"/>

   </wsdl:message>

   <wsdl:portType name="PersonHandler">

      <wsdl:operation name="getUserProfile" parameterOrder="doc">

         <wsdl:input message="impl:getUserProfileRequest" 
name="getUserProfileRequest"/>

         <wsdl:output message="impl:getUserProfileResponse" 
name="getUserProfileResponse"/>

      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="PersonHandlerSoapBinding" type="impl:PersonHandler">

      <wsdlsoap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>

      <wsdl:operation name="getUserProfile">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="getUserProfileRequest">

            <wsdlsoap:body 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>

         </wsdl:input>

         <wsdl:output name="getUserProfileResponse">

            <wsdlsoap:body 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; use="encoded"/>

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="PersonHandlerService">

      <wsdl:port binding="impl:PersonHandlerSoapBinding" name="PersonHandler">

         <wsdlsoap:address 
location="http://localhost:8080/webService/services/PersonHandler"/>

      </wsdl:port>

   </wsdl:service>

</wsdl:definitions>

WSDD

<?xml version="1.0" encoding="UTF-8"?>
<deployment name="defaultClientConfig"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java";
    xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler"; 
xmlns="http://xml.apache.org/axis/wsdd/";>
    <globalConfiguration name="GlobalConfiguration1" type="" 
regenerateElement="false">
        <requestFlow name="RequestFlow1" type="" regenerateElement="false">
            <handler name="Handler1"
                type="java:org.apache.axis.handlers.JWSHandler" 
regenerateElement="false">
                <parameter name="scope" value="session" 
regenerateElement="false"/>
            </handler>
            <handler name="Handler2"
                type="java:org.apache.axis.handlers.JWSHandler" 
regenerateElement="false">
                <parameter name="scope" value="request" 
regenerateElement="false"/>
                <parameter name="extension" value=".jwr" 
regenerateElement="false"/>
            </handler>
        </requestFlow>
    </globalConfiguration>
    <handler name="URLMapper"
        type="java:org.apache.axis.handlers.http.URLMapper" 
regenerateElement="false"/>
    <handler name="LocalResponder"
        type="java:org.apache.axis.transport.local.LocalResponder" 
regenerateElement="false"/>
    <handler name="Authenticate"
        type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" 
regenerateElement="false"/>
    <transport name="http" type="" regenerateElement="false">
        <requestFlow name="RequestFlow1" type="" regenerateElement="false">
            <handler name="Handler1" type="URLMapper" 
regenerateElement="false"/>
            <handler name="Handler2"
                type="java:org.apache.axis.handlers.http.HTTPAuthHandler" 
regenerateElement="false"/>
        </requestFlow>
    </transport>
    <transport name="local" type="" regenerateElement="false">
        <responseFlow name="ResponseFlow1" type="" regenerateElement="false">
            <handler name="Handler1" type="LocalResponder" 
regenerateElement="false"/>
        </responseFlow>
    </transport>
    <service name="AdminService" type="" regenerateElement="false"
        provider="java:MSG" validate="false">
        <parameter name="allowedMethods" value="AdminService" 
regenerateElement="false"/>
        <parameter name="enableRemoteAdmin" value="false" 
regenerateElement="false"/>
        <parameter name="className" value="org.apache.axis.utils.Admin" 
regenerateElement="false"/>
        <namespace>http://xml.apache.org/axis/wsdd/</namespace>
    </service>
    <service name="Version" type="" regenerateElement="false"
        provider="java:RPC" validate="false">
        <parameter name="allowedMethods" value="getVersion" 
regenerateElement="false"/>
        <parameter name="className" value="org.apache.axis.Version" 
regenerateElement="false"/>
    </service>
    <service name="PersonHandler" type="" regenerateElement="false"
        provider="java:MSG" style="document" use="encoded" validate="false">
        <parameter name="scope" value="Request" regenerateElement="false"/>
        <parameter name="className"
            value="it.eng.prototype.websrvc.PersonHandler" 
regenerateElement="false"/>
        <parameter name="allowedMethods" value="*" regenerateElement="false"/>
        <namespace>http://websrvc.prototype.eng.it</namespace>
    </service>
</deployment>

I have written a simple class that creates the document; its code is:

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;

public class Parser {

    /**
     * Mi genero il document da passare al web service.
     * @param queryString String -come deve essere il documento
     * @return Document -il documento creato
     * @exception FactoryConfigurationError -se ci sono problemi nella 
creazione della Factory
     * @exception ParserConfigurationException -se ci sono problemi nel 
parserizzare il documento
     */
    public Document generateDocument(String queryString) throws
            FactoryConfigurationError, ParserConfigurationException {

        DocumentBuilder builder = 
DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document doc            = builder.newDocument();
        Element root            = doc.createElement("queries");
        root.setAttribute("tipoServizio", "testPMM");
        doc.appendChild( root );
        Element tag = doc.createElement( "query" );
        root.appendChild( tag );
        tag.appendChild( doc.createTextNode( queryString ) );

        return doc;
    }
}

Then i have created a simple client:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.SOAPBodyElement;
import org.apache.axis.utils.XMLUtils;
import org.apache.axis.MessageContext;
import org.apache.axis.Message;
import javax.xml.rpc.ServiceException;

import java.util.Vector;
import org.w3c.dom.Document;
import java.io.Reader;
import java.io.StringReader;
import javax.xml.namespace.QName;

import org.apache.log4j.Logger;
import java.net.URL;
import java.net.MalformedURLException;

public class SimpleAxisClient {

    /**
     * Il logger
     */
    private static final Logger LOG = Logger.getLogger(SimpleAxisClient.class.
            getName());

    /**
     * Preparo il l'oggetto Call da utilizzare
     * @param endpoint String -l'endpoint da utilizzare
     * @param operation String -l'operazione da invocare
     * @return Call -il Call generato.
     * @throws ServiceException -Se ci sono problemi col servizio
     */
    private Call getCall(String endpoint, String operation) throws
            ServiceException {

        if (LOG.isDebugEnabled()) {

            LOG.debug("Creating call.....");
        }
        Call result = (Call)(new Service()).createCall();
        try {
            result.setTargetEndpointAddress(new URL(endpoint));
        } catch (MalformedURLException ex) {

            LOG.error( ex );
        }

        //result.setOperation( new QName( endpoint, operation ), operation );
        if (LOG.isDebugEnabled()) {

            LOG.debug("Done!!");
        }
        return result;
    }

    /**
     * Invoco il web service passandogli il Document generato
     * @param doc Document -il Document generato.
     * @param endpoint String -l'endpoint del servizio.
     * @param operation String -l'operazione da invocare.
     * @return Document -il document in uscita al webService
     * @throws Exception
     */
    public Document passDocument(Document doc, String endpoint,
                                          String operation) throws Exception {
        Call call = getCall(endpoint, operation);
        Vector result = (Vector) call.invoke
                        (new SOAPBodyElement[] {new SOAPBodyElement(doc.
                getDocumentElement())});
        SOAPBodyElement sbe = (SOAPBodyElement) result.get(0);
        MessageContext mc = call.getMessageContext();
        Message m = mc.getRequestMessage();
        Document docreq = m.getSOAPEnvelope().getAsDocument();
        if( LOG.isDebugEnabled() ){

            LOG.debug("Body trasmesso: " +
                      XMLUtils.DocumentToString(docreq));
        }
        return docreq;
    }
}

Well when i try this client (i have created 2 web app one that contains the web 
service and one that contains the client), i have this error(i have printed the 
full stacktrace):
09:43:10,275 INFO  [EjbModule] Deploying UserBean
09:43:10,865 INFO  [EJBDeployer] Deployed: 
file:/C:/jboss-3.2.6/server/default/deploy/WebSrvcTest.jar
09:43:11,256 INFO  [TomcatDeployer] deploy, ctxPath=/prototipo, 
warUrl=file:/C:/jboss-3.2.6/server/default/tmp/deploy/tmp55055ClientModule.war/
09:43:12,488 INFO  [TomcatDeployer] deploy, ctxPath=/bpws4j, 
warUrl=file:/C:/jboss-3.2.6/server/default/tmp/deploy/tmp55056bpws4j.war/
09:43:13,369 INFO  [TomcatDeployer] deploy, ctxPath=/jmx-console, 
warUrl=file:/C:/jboss-3.2.6/server/default/deploy/jmx-console.war/
09:43:13,720 INFO  [TomcatDeployer] deploy, ctxPath=/web-console, 
warUrl=file:/C:/jboss-3.2.6/server/default/deploy/management/web-console.war/
09:43:15,212 INFO  [TomcatDeployer] deploy, ctxPath=/webService, 
warUrl=file:/C:/jboss-3.2.6/server/default/tmp/deploy/tmp55057webService.war/
09:43:18,867 INFO  [Http11Protocol] Starting Coyote HTTP/1.1 on 
http-0.0.0.0-8080
09:43:19,258 INFO  [ChannelSocket] JK2: ajp13 listening on /0.0.0.0:8009
09:43:19,268 INFO  [JkMain] Jk running ID=0 time=0/101  config=null
09:43:19,368 INFO  [Server] JBoss (MX MicroKernel) [3.2.6 (build: 
CVSTag=JBoss_3_2_6 date=200410140106)] Started in 29s:783ms
09:43:42,691 INFO  [STDOUT] java.lang.IllegalArgumentException: localPart 
cannot be null
09:43:42,691 INFO  [STDOUT]     at 
javax.xml.namespace.QName.<init>(QName.java:106)
09:43:42,691 INFO  [STDOUT]     at 
javax.xml.namespace.QName.<init>(QName.java:81)
09:43:42,691 INFO  [STDOUT]     at 
org.apache.axis.message.PrefixedQName.<init>(PrefixedQName.java:30)
09:43:42,701 INFO  [STDOUT]     at 
org.apache.axis.message.MessageElement.copyNode(MessageElement.java:2045)
09:43:42,701 INFO  [STDOUT]     at 
org.apache.axis.message.MessageElement.copyNode(MessageElement.java:1997)
09:43:42,771 INFO  [STDOUT]     at 
org.apache.axis.message.MessageElement.<init>(MessageElement.java:197)
09:43:42,771 INFO  [STDOUT]     at 
org.apache.axis.message.SOAPBodyElement.<init>(SOAPBodyElement.java:70)
09:43:42,771 INFO  [STDOUT]     at 
it.eng.prototype.websrvc.client.SimpleAxisClient.passDocument(SimpleAxisClient.java:85)
09:43:42,771 INFO  [STDOUT]     at 
it.eng.prototype.servlet.Dispatcher.doPost(Dispatcher.java:48)
09:43:42,781 INFO  [STDOUT]     at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
09:43:42,781 INFO  [STDOUT]     at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
09:43:42,791 INFO  [STDOUT]     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
09:43:42,791 INFO  [STDOUT]     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
09:43:42,791 INFO  [STDOUT]     at 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)
09:43:42,791 INFO  [STDOUT]     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
09:43:42,801 INFO  [STDOUT]     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
09:43:42,801 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
09:43:42,801 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
09:43:42,801 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
09:43:42,811 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
09:43:42,811 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
09:43:42,811 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
09:43:42,821 INFO  [STDOUT]     at 
org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66)
09:43:42,821 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
09:43:42,821 INFO  [STDOUT]     at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:158)
09:43:42,831 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
09:43:42,831 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
09:43:42,831 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
09:43:42,831 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
09:43:42,841 INFO  [STDOUT]     at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
09:43:42,841 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
09:43:42,841 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
09:43:42,851 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
09:43:42,851 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
09:43:42,851 INFO  [STDOUT]     at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
09:43:42,851 INFO  [STDOUT]     at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
09:43:42,851 INFO  [STDOUT]     at 
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
09:43:42,891 INFO  [STDOUT]     at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
09:43:42,891 INFO  [STDOUT]     at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
09:43:42,891 INFO  [STDOUT]     at 
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
09:43:42,902 INFO  [STDOUT]     at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
09:43:42,902 INFO  [STDOUT]     at java.lang.Thread.run(Thread.java:534)
09:43:43,422 ERROR [Dispatcher] java.lang.IllegalArgumentException: localPart 
cannot be null


Can anybody help me??? Thanks





____________________________________________________________
6X velocizzare la tua navigazione a 56k? 6X Web Accelerator di Libero!
Scaricalo su INTERNET GRATIS 6X http://www.libero.it


Reply via email to