1C 8.3 Web-сервис + клиент на Java #788682


#0 by satoru
Есть web-сервис написанный на 1С 8.3.9 и опубликованный на Apache2.2 (localhost/wsTest/ws/test.1cws?wsdl). Необходимо написать на Java клиента, который будет работать с данной ws-ссылкой. Брал пример с сайта ИТС Использование web-сервисов совместно с Java и .Net, получить данные через метод удалось, но как отключится от web-сервиса, чтобы Apache отключился от базы?. Помогите разобраться с данным вопросом. Код Java:        private void getOS  { lbOS - это надпись на форме, в которую выводится результат. Так же интересует, если в базе есть пользователи, как провести авторизацию?
#1 by Юрий Лазаренко
Через 20 минут после последнего запроса сам отключится.
#2 by satoru
20 мин. слишком долго. Когда подключаюсь к ws-ссылке через 1С и после вызова метода присваиваю переменной значение Неопределено блокировка сразу снимается.
#3 by satoru
а что насчет авторизации?
#4 by satoru
На счет авторизации разобрался, помогла статья ( ответ №1).
#5 by satoru
Осталась проблема с отключением от web-сервиса. И раз подключение с web-сервисом можно отключить в 1С 8 присвоив Неопределено, думаю есть способ и для Java/
#6 by Gary417
должно быть чтототам.close вообще посмотрел код...бл наркоманы чёртовы...ява код с русским языком
#7 by satoru
К сожалению данного метода нет.
#8 by Torquader
С Java фокус может не пройти, так как соединение живо, пока жив объект, его вызвавший, но, в Java у нас есть только сборка мусора, и объект будет жить, пока его не уберут - соответственно, соединение будет оставаться рабочим. P.S. если в объекте можно поменять настройки соединения, то нужно попробовать - после изменения настроек он отключится. Как вариант, покопаться в конфигурации Apache и запретить его Keep-Alive, чтобы после получения ответа соединение сразу рвалось.
#9 by Fram
+1 попробуй присовить null, потом вызвать сборку мусора принудительно Runtime.getRuntime.gc
#10 by Fram
а откуда эти 20 мин?
#11 by satoru
Проблема с отключение не воспроизводится, если база 1С серверная.
#12 by satoru
И ещё в метод take на web-сервисе добавил два параметра: И соответственно Java выдает ошибку: Exception in thread "AWT-EventQueue-0" com.sun.xml.ws.fault.ServerSOAPFaultException: Client received SOAP Fault from server: SOAP message parsing error: unknown parameter.  Please see the server log to find more detail regarding exact cuase of the failure.         Authenticator  auth  = new Authenticator {                          protected PasswordAuthentication getPasswordAuthentication {                 return new PasswordAuthentication("admin", "1".toCharArray);             }
#13 by satoru
up
#14 by Fram
не уверен, но может надо апач рестартануть после обновления вебсервиса?
#15 by satoru
Заново опубликовал и перезапустил, таже ошибка.
#16 by alexhtn
Почитай на ИТС или в документации описание файла default.vrd, в нем можно сделать элемент pool и уменьшить maxAge, который по умолчанию равен 20 минутам.
#17 by satoru
данный вопрос решен, проблема, если метод на веб-сервисе с параметрами
#18 by satoru
up!
#19 by Юрий Лазаренко
В параметрах публикации базы 1С. По дефоллту 20 минут, но можно поставить свое значение.
#20 by satoru
Народ, ещё раз - вопрос с завершением сеанса РЕШЕН! Сейчас необходимо решить вопрос .
#21 by Неверный Параметр И
Уменьши время жизни сеанса в пуле.
#22 by Неверный Параметр И
И расскажи классу wsTest про твои новые параметры
#23 by Курцвейл
На класс порта поставь throw WebServiceException На take }
#24 by satoru
Это не класс, а интерфейс:     /*      * To change this license header, choose License Headers in Project Properties.      * To change this template file, choose Tools | Templates      * and open the template in the editor.      */     })     public interface wsTestPortType {              }
#25 by satoru
И как это сделать?
#26 by Курцвейл
может объясните отличие интерфейса от абстрактного класса?:) дело то не в этом, а в том что расследование подобных ситуаций начинают с try catch и подкласс интерфейс этого не запрещает.
#27 by satoru
Сделал и что дальше? private void getOS throws WebServiceException {         Authenticator  auth  = new Authenticator {                          protected PasswordAuthentication getPasswordAuthentication {                 return new PasswordAuthentication("Admin", "1".toCharArray);             }     }
#28 by Курцвейл
И какую ошибку выдает?
#29 by satoru
Client received SOAP Fault from server: SOAP message parsing error: unknown parameter.  Please see the server log to find more detail regarding exact cuase of the failure.
#30 by Mauser
См 12. Неожиданно, не правда-ли?
#31 by Mauser
На ИТС русским по белому написано: [1C]Если необходимо перегенерировать прокси web-сервиса, удалите каталог src/wsdemo/client и выполните следующую команду: wsimport -keep -p wsdemo.client -s src -extension ] Не пробовал?
#32 by satoru
Попробовал. Выдаёт ошибку: "wsimport" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
#33 by satoru
up
#34 by Serginio1
Да и потом говорят, что .Net отстой
#35 by satoru
Проблему решил. Используя NetBeans IDE 8.2 добавил в проект новый файл "Веб службы - клиент веб-службы" и платформа сама сгенерировала все необходимые классы и интерфейсы. Тема закрыта. Всё, кто помогал, спасибо!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С