严重:SAAJ0540:运行Java小程序后出错

严重:SAAJ0540:运行Java小程序后出错,java,web-services,soap,applet,saaj,Java,Web Services,Soap,Applet,Saaj,我正在尝试将一个小程序运行到.Net Web项目中,我将一个jar导入到项目中,其中包含我用Eclipse开发的所有小程序,在运行小程序之前一切正常,当我运行它时,我出现了一个错误,我不知道如何解决它。错误如下: feb 04, 2015 12:29:11 PM com.sun.xml.internal.messaging.saaj.soap.MessageImpl saveChanges SEVERE: SAAJ0540: error al guardar un mensaje de var

我正在尝试将一个小程序运行到.Net Web项目中,我将一个jar导入到项目中,其中包含我用Eclipse开发的所有小程序,在运行小程序之前一切正常,当我运行它时,我出现了一个错误,我不知道如何解决它。错误如下:

feb 04, 2015 12:29:11 PM  com.sun.xml.internal.messaging.saaj.soap.MessageImpl saveChanges
SEVERE: SAAJ0540: error al guardar un mensaje de varias partes

 com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Error during saving a multipart message
  at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.saveChanges(Unknown Source)
  at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.writeTo(Unknown Source)
  at paqSoap.Soap.enviar_y_obtener_string(Soap.java:259)
  at paqConfiguracion.ConfiguracionLetra.<init>(ConfiguracionLetra.java:508)
  at paqApplet.PruebaLetra.iniciarVariables(PruebaLetra.java:210)
  at paqApplet.PruebaLetra.init(PruebaLetra.java:109)
  at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(Unknown Source)
  at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
  at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.ExceptionInInitializerError
   at java.lang.Class.forName0(Native Method)
   at java.lang.Class.forName(Unknown Source)
   at com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection.<clinit>(Unknown Source)
   at com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer.transform(Unknown Source)
   at com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl.output(Unknown Source)
   at com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl.output(Unknown Source)
   at com.sun.xml.internal.messaging.saaj.soap.SOAPPartImpl.getContentAsStream(Unknown Source)
   at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.getHeaderBytes(Unknown Source)
... 9 more

Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "com.sun.xml.internal.fastinfoset.parser.string-interning" "read")
   at java.security.AccessControlContext.checkPermission(Unknown Source)
   at java.security.AccessController.checkPermission(Unknown Source)
   at java.lang.SecurityManager.checkPermission(Unknown Source)
   at sun.plugin2.applet.AWTAppletSecurityManager.checkPermission(Unknown Source)
   at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
   at java.lang.System.getProperty(Unknown Source)
   at com.sun.xml.internal.fastinfoset.Decoder.<clinit>(Unknown Source)
     ... 17 more
我有这部分代码的代码是:

 public String enviar_y_obtener_string() throws DOMException, SOAPException   {
    AccessController.doPrivilegedWithCombiner(new PrivilegedAction<String>(){

        public String run(){

            try
            {
                SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
                SOAPConnection connection = scf.createConnection();

                //Crea el mensaje
                MessageFactory mf = MessageFactory.newInstance();
                SOAPMessage message = mf.createMessage();
                /* MimeHeaders hd = message.getMimeHeaders();
                String serverURI = this.soapAction+metodo;
                hd.addHeader("SOAPAction", serverURI);*/

                System.out.println("El mensaje al principio es:"+message);

                //Crea las partes del mensaje       
                SOAPPart soapPart = message.getSOAPPart();
                SOAPEnvelope envelope = soapPart.getEnvelope();
                SOAPBody body = envelope.getBody();

                System.out.println("El servidor en enviar_y_obtener_string es:"+servidor+" y el método es:"+metodo);
                //Name n = envelope.createName(metodo,"",servidor);
                Name n = envelope.createName(metodo,"","http://localhost:3624/");   
                SOAPBodyElement soapBodyElement =body.addBodyElement(n);

                for(int i=0;i<lista_nombre_parametros.size();i++)
                {

                    //Name name2 = envelope.createName(this.lista_nombre_parametros.get(i).toString());
                    //SOAPElement soapElement = soapBodyElement.addChildElement(name2);
                    SOAPElement soapElement = soapBodyElement.addChildElement(lista_nombre_parametros.get(i).toString());
                    System.out.println("El nombre del parámetro es:"+lista_nombre_parametros.get(i).toString());
                    int tipo=Integer.valueOf(lista_tipo_parametro.get(i).toString()).intValue();
                    if(tipo==IdTipoCadena){
                        //soapElement.addTextNode("437");
                        soapElement.addTextNode(lista_valores_parametros.get(i).toString());
                        System.out.println("El valor es:"+ lista_valores_parametros.get(i).toString());
                    }
                    else
                    {
                        SOAPFactory soapFactory = SOAPFactory.newInstance();
                        Name nodeName = envelope.createName("nodo");
                        SOAPElement soapElementint=soapElement.addChildElement(nodeName);
                        ArrayList arraydev=(ArrayList)lista_valores_parametros.get(i);
                        for(int j=0;j<arraydev.size();j++)
                        {
                            Name name3 = envelope.createName("carlos");
                            SOAPElement soapElementhijo=soapElementint.addChildElement(name3);  
                            soapElementhijo.addTextNode("p");

                        }
                    }

                }



                message.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean( true ));
                message.setProperty(Call.SOAPACTION_URI_PROPERTY,url);

                MimeHeaders hd = message.getMimeHeaders();
                // String serverURI = this.soapAction+metodo;
                String serverURI = soapAction;
                System.out.println("ServerURI en enviar_y_obtener_string es:"+serverURI);
                hd.addHeader("SOAPAction", "http://localhost:3624/getConfig");
                //hd.addHeader("SOAPAction", serverURI);

                //message.saveChanges();
                url=leerPropiedades()[2];
                System.out.println("La url es dentro de enviar_y_obtener_string:"+url);
                //Establece la URL del destino
                URL endpoint = new URL(url);

                //Envía el mensaje
                System.out.println("Endpoint es:"+endpoint);

                String msg;
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                message.writeTo(baos);
                msg = baos.toString();
                System.out.println("msg es:"+message);



                SOAPMessage response = connection.call(message, endpoint);
                System.out.println("Voy a cerrar la conexión");
                //Cierra la conexión
                connection.close();

                //Obtiene los resultados
                TransformerFactory tf = TransformerFactory.newInstance();
                return response.getSOAPBody().getFirstChild().getTextContent();

            }
            catch (Exception ex) 
            {
                ex.printStackTrace();
                return "";
            }


        }
    });

    return response.getSOAPBody().getFirstChild().getTextContent();


    }
在.Net中运行小程序时,我也使用了xercesImpl.jar和xml-api.jar,那么这里有什么问题呢?。我有点迷路了


非常感谢和问候

以下是您需要采取的几个步骤:

将您的enviar_y_obtener_字符串执行包装在匿名特权中 通过调用AccessController.doPrivilegedyourPrivilegedAction检索字符串 此外,您还需要考虑:

为小程序签名 使用Java代码约定仅用英语编写代码、方法等。
如何使用Keytool对小程序进行签名?。Thanks@zoit您可以参考有关如何为小程序签名的链接。执行后:将enviar_y_obtener_字符串执行包装在匿名PrivilegedAction中,通过调用AccessController.doPrivilegedyourPrivilegedAction检索该字符串我会收到与以前相同的错误。