Java-апплет SOAPMessage вызывает «SAAJ0540: Ошибка при сохранении составного сообщения» - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть проблема, которую я свел к этому простому примеру.

import java.applet.Applet;

import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPMessage;

public class SOAPTest2 extends Applet {
    private static final long serialVersionUID = -1;

    public void init(){
        try{
            MessageFactory mf = MessageFactory.newInstance();
            SOAPMessage sm = mf.createMessage();

            System.out.println("About to fail");
            sm.writeTo(System.out);
            System.out.println();

            System.out.println("If you see this, it didn't fail.");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

Когда я запускаю это в eclipse (JDK 1.6.0_27), оно работает так, как я ожидал, и я получаю следующеевыходные данные:

About to fail
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body/></SOAP-ENV:Envelope>
If you see this, it didn't fail.

Когда я запускаю это в браузере в качестве апплета, я получаю следующую ошибку в консоли Java.

About to fail
14-Sep-2011 1:20:51 PM com.sun.xml.internal.messaging.saaj.soap.MessageImpl saveChanges
SEVERE: SAAJ0540: Error during saving a multipart message
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 SOAPTest2.init(SOAPTest2.java:16)
    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)
    ... 5 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 java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
    at java.lang.System.getProperty(Unknown Source)
    at com.sun.xml.internal.fastinfoset.Decoder.<clinit>(Unknown Source)
    ... 13 more

Я не понимаю, почему это такпроисходит.Я просто создаю пустой SOAPMessage и пытаюсь записать его в System.out.У меня нет доступа к местным ресурсам.Я провел большой поиск по MessageImpl.saveChanges и FastInfosetReflection, но безрезультатно.Пожалуйста, попробуйте пример, и дайте мне знать, если у вас есть какие-либо идеи.

С уважением, я прошу, чтобы любые ответы, которые говорят мне подписать мою банку, сопровождались разумным объяснением с учетом приведенного выше минимального примера, которыйне получить доступ к локальным ресурсам.

Ответы [ 2 ]

1 голос
/ 17 сентября 2011

Исключение не требует пояснений:

Причина: java.security.AccessControlException: доступ запрещен (java.util.PropertyPermission com.sun.xml.internal.fastinfoset.parser.string-interning read)

SAAJ накладывает ограничения безопасности, и у вас нет проблем при запуске в Eclipse, но при запуске из апплета вы работаете в песочнице, и менеджер безопасности останавливает поток

0 голосов
/ 14 сентября 2011

Определенно проблема подписи.http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html

Вы можете попробовать его с точными значениями из этой ссылки (в данном примере отличается только то, что jar называется sample.jar):

  1. Создайте jar с именем sample.jar
  2. Выполните: keytool -genkey -alias signFiles -keystore compstore -keypass kpi135 -dname "cn = jones" -storepass ab987c
  3. Run: jarsigner -keystore compstore-storepass ab987c -keypass kpi135 -signedjar Ssample.jar sample.jar signFiles

Я должен добавить, что я знаю, что это решение, поскольку я работаю с FuryComputers ... Я понятия не имею, почему этоРешение, хотя - у кого-нибудь еще есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...