Java 在基于SOAP的Web服务中,如何将动态数组传递给服务器

Java 在基于SOAP的Web服务中,如何将动态数组传递给服务器,java,mysql,web-services,Java,Mysql,Web Services,我陷入了这个可怕的问题,我用Java实现了一个基于SOAP的Web服务。除了其他数据之外,客户端应该有“男性”和“女性”复选框,这样用户可以选择其中一个或两者,客户端应该将其发送到服务器,存储在数据库中,在数据库中它是一个多值实体,但它给了我错误500,服务器端的故障,我传递数组然后在服务器端使用它的方式是否正确?如果不是,我如何传递和处理它?以下是客户代码,提前感谢您的时间: private void salvaActionPerformed(java.awt.event.ActionEven

我陷入了这个可怕的问题,我用Java实现了一个基于SOAP的Web服务。除了其他数据之外,客户端应该有“男性”和“女性”复选框,这样用户可以选择其中一个或两者,客户端应该将其发送到服务器,存储在数据库中,在数据库中它是一个多值实体,但它给了我错误500,服务器端的故障,我传递数组然后在服务器端使用它的方式是否正确?如果不是,我如何传递和处理它?以下是客户代码,提前感谢您的时间:

private void salvaActionPerformed(java.awt.event.ActionEvent evt) {                                      
    // TODO add your handling code here:
    disease=malattia.getText();


    sexarra=new String[sexint];
    if(sexint==1)
        sexarra[0]=sexone;
    else if(sexint==0)
        JOptionPane.showMessageDialog(null, "Bisogna specificare almeno un valore del campo sesso", "Errore", JOptionPane.ERROR_MESSAGE);
    else{
        sexarra[0]=sexone;
        sexarra[1]=sextwo;}
        // System.out.print(sexarra[0]);
        //     System.out.println(sexarra[1]);



        description=descrizione.getText();


        agestr=eta.getText();
        if(agestr.equalsIgnoreCase(""))
            JOptionPane.showMessageDialog(null, "Il campo età non può essere vuoto", "Errore", JOptionPane.ERROR_MESSAGE);

        age=Integer.parseInt(agestr);
        if( age<=0 || age>=110){

            JOptionPane.showMessageDialog(null, "Il valore inserito nel campo età non è giusto", "Errore", JOptionPane.ERROR_MESSAGE);
        }
        else{

            try {
                URL url = new URL("http://localhost:8080/soap/servlet/rpcrouter");
                //costruzione della chiamata
                Call chiamata = new Call();
                chiamata.setTargetObjectURI("urn:ServerNeuro");
                chiamata.setMethodName("aggiungi_malattia");
                chiamata.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

                SOAPMappingRegistry smr = new SOAPMappingRegistry();
                StringDeserializer sd = new StringDeserializer ();
                smr.mapTypes (Constants.NS_URI_SOAP_ENC, new QName ("", "return"), null, null, sd);
                chiamata.setSOAPMappingRegistry(smr);


                //creazione dei parametri

                Vector parametri = new Vector();
                parametri.addElement(new Parameter("malattia", String.class, disease, null));
                parametri.addElement(new Parameter("eta", Integer.class, age, null));
                parametri.addElement(new Parameter("descrizione", String.class, description, null));
                parametri.addElement(new Parameter("sexarra",String[].class, sexarra, null));

                chiamata.setParams(parametri);
                try {
                    Response risp = chiamata.invoke(url, "");
                    if (risp.generatedFault()) {
                        Fault fault = risp.getFault();
                        System.err.println("Chimata Fallita");
                        System.err.println("Code: " + fault.getFaultCode());
                        System.err.println("descrizione: " + fault.getFaultString());
                    } else {
                        Parameter par = risp.getReturnValue();
                        msg = (String) par.getValue();
                        System.out.print(msg);
                    }
                } catch (SOAPException e) {
                    System.out.println("Errore causata da: (" + e.getFaultCode() + ") :" + e.getMessage());
                    msg = "errore";
                }

            } catch (MalformedURLException ex) {
                System.out.println("Exception: " + ex.getMessage());
            }
            System.out.println(msg);
            if (msg.equals("si")) {
                JOptionPane.showMessageDialog(null, "La registrazione è avvenuta con successo", "REGISTRAZIONE", JOptionPane.INFORMATION_MESSAGE);

            }
            else{


                JOptionPane.showMessageDialog(null, "Attenzione il utente inserito è gia esistente nel database", "ATTENZIONE", JOptionPane.ERROR_MESSAGE);
            }
        }
}                                     

private void femminaActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:

    if(femmina.isSelected()){
        if(sexint==0){
            sexint++;
            sexone=femmina.getText();

        }

        else if(sexint==1){
            sexint++;

            sextwo=femmina.getText();
        }
        else
            sexint--;

        System.out.println(sexint);
    }
}                                       

private void maschioActionPerformed(java.awt.event.ActionEvent evt) {                                        
    if(maschio.isSelected()){
        if(sexint==0){
            sexint++;
            sexone=maschio.getText();

        }

        else if(sexint==1){
            sexint++;

            sextwo=maschio.getText();
        }
        else
            sexint--;

        System.out.println(sexint);
    }
}  
这是Catalina的最后一行。我觉得这没有任何意义。我怀疑数组可能是导致它的原因,因为它是在运行时确定的,我找不到任何其他方法来完成它,这里的提示将不胜感激

    Jul 20, 2011 11:35:22 PM org.apache.catalina.realm.CombinedRealm startInternal
    SEVERE: Failed to start "org.apache.catalina.realm.UserDatabaseRealm/1.0" realm
    org.apache.catalina.LifecycleException: No UserDatabase component found under key UserDatabase
        at org.apache.catalina.realm.UserDatabaseRealm.startInternal(UserDatabaseRealm.java:264)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
        at org.apache.catalina.realm.CombinedRealm.startInternal(CombinedRealm.java:201)
        at org.apache.catalina.realm.LockOutRealm.startInternal(LockOutRealm.java:120)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1026)
                at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:620)
        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.catalina.startup.Bootstrap.start(Bootstrap.java:303)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)
    Jul 20, 2011 11:35:22 PM org.apache.catalina.startup.HostConfig deployWAR
    INFO: Deploying web application archive soap.war
    Jul 20, 2011 11:35:23 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory manager
    Jul 20, 2011 11:35:23 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory examples
    Jul 20, 2011 11:35:24 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory ROOT
    Jul 20, 2011 11:35:24 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory host-manager
    Jul 20, 2011 11:35:25 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory docs
    Jul 20, 2011 11:35:25 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory axis
    - Unable to find config file.  Creating new servlet engine config file: /WEB-INF/server-config.wsdd
    Jul 20, 2011 11:35:26 PM org.apache.coyote.AbstractProtocolHandler start
    INFO: Starting ProtocolHandler ["http-bio-8080"]
    Jul 20, 2011 11:35:26 PM org.apache.coyote.AbstractProtocolHandler start
    INFO: Starting ProtocolHandler ["ajp-bio-8009"]
    Jul 20, 2011 11:35:26 PM org.apache.catalina.startup.Catalina start
    INFO: Server startup in 3780 
不幸的是,即使修改了我认为可能会抛出NPE的代码,它仍然没有改变任何东西。我从 如果(sexarra[1]==null){….}

到 如果(sexarra.lenght==2){…}

我得到以下错误:

      Errore causata da: (SOAP-ENV:Protocol) :Unsupported response content type "text/html; charset=utf-8", must be: "text/xml". Response was:
Apache Tomcat/7.0.14-错误报告HTTP状态500-类型异常报告

消息

说明服务器遇到内部错误(),无法满足此请求。

异常javax.servlet.ServletException:错误生成响应信封:java.lang.NullPointerException org.apache.soap.server.http.RPCRouterServlet.doPost(RPCRouterServlet.java:418) javaservlet.http.HttpServlet.service(HttpServlet.java:641) javaservlet.http.HttpServlet.service(HttpServlet.java:722) 注意,Apache Tomcat/7.0.14日志中提供了根本原因的完整堆栈跟踪

这是“catalina.out引起的grep”的输出

grep:by:没有这样的文件或目录
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8080
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8009
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8080
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8009
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8080
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8009
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8080
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8009
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8080
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8009
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8080
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8009
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8080
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8009
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8080
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8009
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8080
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中
catalina.out:原因:java.net.BindException:地址已在使用中:8009
catalina.out:由以下原因引起:java.net.BindE
      Errore causata da: (SOAP-ENV:Protocol) :Unsupported response content type "text/html; charset=utf-8", must be: "text/xml". Response was:
javax.servlet.ServletException: Error building response envelope: java.lang.NullPointerException org.apache.soap.server.http.RPCRouterServlet.doPost(RPCRouterServlet.java:418) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
  grep: by: No such file or directory
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.lang.ClassNotFoundException: org.apache.catalina.startup.Bootstrap
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.lang.ClassNotFoundException: org.apache.catalina.startup.Bootstrap
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.SocketException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8080
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use
    catalina.out:Caused by: java.net.BindException: Address already in use <null>:8009
    catalina.out:Caused by: java.net.BindException: Address already in use