Server:
public class TestServer {
public String testService(String name){
return  name;
}
}client:public class test { /**
 * @param args
 * @throws RemoteException 
 */
public static void main(String[] args) throws RemoteException {
// TODO Auto-generated method stub
TestServiceStub Stub = new TestServiceStub();
TestServiceStub.TestService request = new TestServiceStub.TestService();
request.setName("jone");
System.out.println(Stub.testService(request).get_return());
}}EXCEPTION:[ERROR] wrong number of arguments
java.lang.IllegalArgumentException: wrong number of arguments
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:178)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

     TestServiceStub.TestService request = new TestServiceStub.TestService();这是什么?
      

  2.   

    stub里面的一个静态类,自动生成后要求加载接口中的抽象serialize()方法,怀疑该错误与该方法有关
      public static class TestService
            implements org.apache.axis2.databinding.ADBBean{
                    public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(
                    "http://com",
                    "testService",
                    "ns1");
            private static java.lang.String generatePrefix(java.lang.String namespace) {
                if(namespace.equals("http://com")){
                    return "ns1";
                }
                return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
            }                        
                                        protected java.lang.String localName ;
                                    
                               /*  This tracker boolean wil be used to detect whether the user called the set method
                              *   for this attribute. It will be used to determine whether to include this field
                               *   in the serialized XML
                               */
                               protected boolean localNameTracker = false ;
                                                          /**
                               * Auto generated getter method
                               * @return java.lang.String
                               */
                               public  java.lang.String getName(){
                                   return localName;
                               }                           
                            
                                /**
                                   * Auto generated setter method
                                   * @param param Name
                                   */
                                   public void setName(java.lang.String param){
                                
                                           if (param != null){
                                              //update the setting tracker
                                              localNameTracker = true;
                                           } else {
                                              localNameTracker = true;
                                                  
                                           }
                                       
                                                this.localName=param;
                                                                       }
                                     /**
         * isReaderMTOMAware
         * @return true if the reader supports MTOM
         */
       public static boolean isReaderMTOMAware(javax.xml.stream.XMLStreamReader reader) {
            boolean isReaderMTOMAware = false;
            
            try{
              isReaderMTOMAware = java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_DATA_HANDLERS_AWARE));
            }catch(java.lang.IllegalArgumentException e){
              isReaderMTOMAware = false;
            }
            return isReaderMTOMAware;
       }
         
         
            /**
            *
            * @param parentQName
            * @param factory
            * @return org.apache.axiom.om.OMElement
            */
           public org.apache.axiom.om.OMElement getOMElement (
                   final javax.xml.namespace.QName parentQName,
                   final org.apache.axiom.om.OMFactory factory) throws org.apache.axis2.databinding.ADBException{
            
                    org.apache.axiom.om.OMDataSource dataSource =
                           new org.apache.axis2.databinding.ADBDataSource(this,MY_QNAME){                 public void serialize(org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
                           TestService.this.serialize(MY_QNAME,factory,xmlWriter);
                     }
                   };
                   return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(
                   MY_QNAME,factory,dataSource);
                
           }         public void serialize(final javax.xml.namespace.QName parentQName,
                                           final org.apache.axiom.om.OMFactory factory,
                                           org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter)
                                    throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException{
                               serialize(parentQName,factory,xmlWriter,false);
             }         public void serialize(final javax.xml.namespace.QName parentQName,
                                   final org.apache.axiom.om.OMFactory factory,
                                   org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter,
                                   boolean serializeType)
                throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException{
     java.lang.String prefix = null;
                    java.lang.String namespace = null;
                                        prefix = parentQName.getPrefix();
                        namespace = parentQName.getNamespaceURI();                    if ((namespace != null) && (namespace.trim().length() > 0)) {
                            java.lang.String writerPrefix = xmlWriter.getPrefix(namespace);
                            if (writerPrefix != null) {
                                xmlWriter.writeStartElement(namespace, parentQName.getLocalPart());
                            } else {
                                if (prefix == null) {
                                    prefix = generatePrefix(namespace);
                                }                            xmlWriter.writeStartElement(prefix, parentQName.getLocalPart(), namespace);
                                xmlWriter.writeNamespace(prefix, namespace);
                                xmlWriter.setPrefix(prefix, namespace);
                            }
                        } else {
                            xmlWriter.writeStartElement(parentQName.getLocalPart());
                        }
                    
                      if (serializeType){
                                      java.lang.String namespacePrefix = registerPrefix(xmlWriter,"http://com");
                       if ((namespacePrefix != null) && (namespacePrefix.trim().length() > 0)){
                           writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type",
                               namespacePrefix+":testService",
                               xmlWriter);
                       } else {
                           writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type",
                               "testService",
                               xmlWriter);
                       }               
                       }
                    if (localNameTracker){
                                        namespace = "http://com";
                                        if (! namespace.equals("")) {
                                            prefix = xmlWriter.getPrefix(namespace);                                        if (prefix == null) {
                                                prefix = generatePrefix(namespace);                                            xmlWriter.writeStartElement(prefix,"name", namespace);
                                                xmlWriter.writeNamespace(prefix, namespace);
                                                xmlWriter.setPrefix(prefix, namespace);                                        } else {
                                                xmlWriter.writeStartElement(namespace,"name");
                                            }                                    } else {
                                            xmlWriter.writeStartElement("name");
                                        }
                                                                              if (localName==null){
                                                  // write the nil attribute
                                                  
                                                         writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","1",xmlWriter);
                                                      
                                              }else{                                        
                                                       xmlWriter.writeCharacters(localName);
                                                
                                              }
                                        
                                       xmlWriter.writeEndElement();
                                 }
                        xmlWriter.writeEndElement();
                           }         /**
              * Util method to write an attribute with the ns prefix
              */
              private void writeAttribute(java.lang.String prefix,java.lang.String namespace,java.lang.String attName,
                                          java.lang.String attValue,javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException{
                  if (xmlWriter.getPrefix(namespace) == null) {
                           xmlWriter.writeNamespace(prefix, namespace);
                           xmlWriter.setPrefix(prefix, namespace);              }              xmlWriter.writeAttribute(namespace,attName,attValue);         }        /**
              * Util method to write an attribute without the ns prefix
              */
              private void writeAttribute(java.lang.String namespace,java.lang.String attName,
                                          java.lang.String attValue,javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException{
                    if (namespace.equals(""))
                  {
                      xmlWriter.writeAttribute(attName,attValue);
                  }
                  else
                  {
                      registerPrefix(xmlWriter, namespace);
                      xmlWriter.writeAttribute(namespace,attName,attValue);
                  }
              }...
              }