Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Апплет и WebService 
:(
    Опции темы
vlad1823
Дата 13.10.2011, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.10.2011

Репутация: нет
Всего: нет



Создан Java-апплет... Среда разработки "SpringSource Tool Suite Version: 2.6.1.RELEASE". Java version "1.6.0_22". В среде разработки апплет отлично отрабатывает...
Что главное в нем... Он вызывает на выполнение метод setData WebService... WebService находится на отдельном Linux сервере...
Данный метод производит изменение атрибута приложения InfoSphere.
Как только апплет запускаю не из среды, апплет отображается в браузере, но в методе апплета, где происходит обращение к WebService вылетает ошибка.
Про FAQ Подписи в апплетах - как это делается ? читал. Да и другие статьи тоже... Системы безопасности для клиентов. Создание доверенного апплета в JDK1.3...
Но невыходит каменный цветок у Данилы-мастера...
Метод в апплете, где происходит вызов WebService
Цитата

    private void extracted(String arg0, String arg1, String arg2, String arg3) {
  try {
    // First create the connection
    SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory
     .newInstance();
    SOAPConnection connection = soapConnFactory.createConnection();

    // Next, create the actual message
    MessageFactory messageFactory = MessageFactory.newInstance();
    SOAPMessage message = messageFactory.createMessage();

    // Create objects for the message parts
    SOAPPart soapPart = message.getSOAPPart();
    SOAPEnvelope envelope = soapPart.getEnvelope();
    SOAPBody body = envelope.getBody();

    // Populate the body
    // Create the main element and namespace
    SOAPElement bodyElement = body.addChildElement(envelope.createName(
     "setData", "nsi", "http://nsi.asur.mos.ru/"));
    // // Add content
    bodyElement.addChildElement("arg0").addTextNode(arg0);
    bodyElement.addChildElement("arg1").addTextNode(arg1);
    bodyElement.addChildElement("arg2").addTextNode(arg2);
    bodyElement.addChildElement("arg3").addTextNode(arg3);

    
    //System.getSecurityManager().checkAccept("192.168.11.120", 7507);
    // Save the message
    message.saveChanges();

    // Check the input
    System.out.println("\nREQUEST:\n");
    message.writeTo(System.out);
    // Send the message and get a reply

    // Set the destination
    String destination = "http://192.168.11.120:7507/nsidataset/SetDataSrvc";
    // Send the message
    SOAPMessage reply = connection.call(message, destination);
    // Check the output
    System.out.println("\nRESPONSE:\n");
    // Create the transformer
    TransformerFactory transformerFactory = TransformerFactory
     .newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    // Extract the content of the reply
    Source sourceContent = reply.getSOAPPart().getContent();
    // Set the output for the transformation
    StreamResult result = new StreamResult(System.out);
    System.out.println("\n");
    transformer.transform(sourceContent, result);

    System.out.println();
    // Close the connection
    connection.close();
  } catch (Exception e) {
    String s = "";
    for (StackTraceElement iterable_element : e.getStackTrace()) {
    s += iterable_element.getClassName() + "."
      + iterable_element.getMethodName() + "."
      + iterable_element.getLineNumber() + "\n";
    }
    e.printStackTrace();
    generatredSignatureTextField.setText(e.getMessage() + " \n " + s);
  }
    }

Место ошибки 
Цитата
SOAPMessage reply = connection.call(message, destination);

И так, что сделал для создания доверенного апплета:
1. Создание JAR-архива
Цитата
jar cvf AppletNew.jar AppletNew

2. Создал в keystore свой персональный сертификат...
Цитата
keytool -genkey -alias signEDS -keystore compstore -keypass <....> -storepass <....> -dname "CN=EDS, OU=JavaSoft, O=<....>, L=<....>, S=<....>, C=RU"

3. Подписал апплет созданным сертификатом...
Цитата
jarsigner -keystore compstore -storepass <....> -keypass <....> -signedjar SAppletNew.jar AppletNew.jar signEDS

Файлы в каталоге META-INF: MANIFEST.MF, SIGNEDS.DSA, SIGNEDS.SF имеются...
4. Перекинул файлы: 
SAppletNew.jar - подписанный апплет;
compstore - созданное хранилище сертификатов.
в другой каталог (E:\1\) для тестирования апплета.
В этом каталоге создал HTML-файл вызова апплета
Цитата

<html>
    <body>
  <applet code="AppletNew/AppletNew.class" ARCHIVE="SAppletNew.jar" width=400 height=400>
    <PARAM name="xml" value="Это XML-файл">
    <PARAM name="name_catalog" value="Базовый регистр">
    <PARAM name="id_item" value="citizenshipType">
  </applet>
    </body>
</html>

5. В файле "C:\Program Files\Java\jre6\lib\security\java.policy" добавил:
Цитата

keystore "file:E:\1\compstore";
grant {
    permission java.net.SocketPermission "192.168.11.120:7507", "accept";
    permission java.net.SocketPermission "192.168.11.120:7507", "connect";
    permission java.net.SocketPermission "192.168.11.120:7507", "listen";
};
для того чтобы указать в политике безопасности, что мы можем доверять апплету и разрешить обращение по URL...

Ну и теперь запускаю апплет в браузере... Апплет отображается... Формируется подпись, как и положено, НО при отсылании подписи на WebService вылетает ошибка...
Цитата
403Forbidden
 
(Запрещено) Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе со стороны клиента к указанному ресурсу.
Чего нехватает ?
А скорее всего политики безопасности... Но что еще нужно указать?
PM MAIL   Вверх
Skipy
Дата 13.10.2011, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: нет
Всего: 16



Если бы были ограничения доступа - до сервера бы дело даже не дошло. 403-я ошибка возвращется сервером, когда клиент запрашивает ресурс, доступ к которому запрещен на сервере. Т.е. клиент полез "не туда". 


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
vlad1823
Дата 14.10.2011, 05:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.10.2011

Репутация: нет
Всего: нет



Skipy
Точно, когда апплет запускаю просто в браузере, то через прокси запрос идет....
Спасибо...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Апплеты | Следующая тема »


 




[ Время генерации скрипта: 0.0418 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.