powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / передача SOAP-сообщений между серверами
7 сообщений из 7, страница 1 из 1
передача SOAP-сообщений между серверами
    #34605885
s_petrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Java занимаюсь недавно, и никак не могу сообразить, как лучше решить эту задачу:
есть два сервера, которые должны обмениваться данными по SOAP, используя JAXM, SAAJ. На обоих серверах веб-приложения на Java, которые я могу править. Оператор первого сервера жмет в браузере на кнопку "отослать данные", сервлет первого сервера берет данные из базы и отсылает их (по SOAP) на второй сервер. Сервлет на втором сервере извлекает данные из SOAP-сообщения и вставляет их в свою базу.

Помогите новичку, пожалуйста. Какие мне нужно реализовать классы и сервлеты на обоих серверах? Как примерно выглядит простейший код этих сервлетов?

P.S. Никаких веб-сервисов не нужно...Просто чтобы данные передавались...А взять/добавить данные в базу - не проблема...
...
Рейтинг: 0 / 0
передача SOAP-сообщений между серверами
    #34605968
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s_petrovP.S. Никаких веб-сервисов не нужно...Просто чтобы данные передавались...А взять/добавить данные в базу - не проблема...

во-первых SOAP уже давно стал синонимом слова веб сервис, хотя может действительно использоваться в утилитарных целях...
А так, по сути, если совсем уж в общих словах... ты одним серваком через URL коннекшн коннектишься на свой сервлет, кстати, какую версию соапа ты собрался испльзовать? Учти, они не совместимы... Далее ты окрываешь потоки, с одной стороны на чтение, с другой стороны на запись, пишешь туда свой соап энвелоп... В соответствие со схемой выбраной версии, она в инете есть. Потом парсером разбираешь конверт, достаешь, там, хидеры, боди, разбираешь их и т.д...взял бы лучше вебсервис, там это все уже за тебя давно и грамотно написали...
...
Рейтинг: 0 / 0
передача SOAP-сообщений между серверами
    #34606125
s_petrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
y3uДалее ты окрываешь потоки, с одной стороны на чтение, с другой стороны на запись, пишешь туда свой соап энвелоп...
не совсем понятно... Вот на ru.sun.com есть документ по веб-сервисам. Если делать, как там написано, то у меня получается:

Код:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.xml.soap.*;
import java.net.URL;

public class form_xml extends HttpServlet {    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        //подключение к БД, получение данных
        //формирование XML на основе этих данных
        
try {   
           //Create a SOAPConnection   
           SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();//
           SOAPConnection connection = factory.createConnection(); //
 
           //Create a SOAPMessage
           MessageFactory messageFactory = MessageFactory.newInstance();//
           SOAPMessage message = messageFactory.createMessage();//
           SOAPPart  soapPart = message.getSOAPPart();//
           SOAPEnvelope envelope = soapPart.getEnvelope();//
//           SOAPHeader header = envelope.getHeader();
           SOAPBody body = envelope.getBody();//
//           header.detachNode();
 
           //Create a SOAPBodyElement
           Name bodyName = envelope.createName("GetLastTradePrice",  "m", "http://192.168.100.2");//
           SOAPBodyElement bodyElement = body.addBodyElement(bodyName);//
           
           bodyElement.addTextNode("some-xml-text");//!!!
           //Insert Content
//           Name name = envelope.createName("symbol");
//           SOAPElement symbol = bodyElement.addChildElement(name);
//           symbol.addTextNode("SUNW");
 
           // Create an endpint point which is either URL or String type
           URL endpoint = new URL("http://192.168.100.2/server_2/getXML");//
          
           //Send a SOAPMessage (request) and then wait for SOAPMessage (response)
           SOAPMessage soapresponse= connection.call(message, endpoint);//

           // Close the SOAPConnection
           connection.close();//

       } catch (Exception e) {
           System.out.println(e.getMessage());
       }

...
Рейтинг: 0 / 0
передача SOAP-сообщений между серверами
    #34606138
s_petrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ох, извините за форматирование, случайно отправил. Исправляюсь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.xml.soap.*;
import java.net.URL;

public class form_xml extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//подключение к БД, получение данных
//формирование XML на основе этих данных

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

MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
SOAPPart soapPart = message.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPBody body = envelope.getBody();

Name bodyName = envelope.createName("GetLastTradePrice", "m", "http://192.168.100.2");
SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
bodyElement.addTextNode(myXMLText);

URL endpoint = new URL("http://192.168.100.2/server_2/getXML");
SOAPMessage soapresponse= connection.call(message, endpoint);

connection.close();

} catch (Exception e) {
System.out.println(e.getMessage());
}
Можно так делать, или я что-то недопонял? Если можно, то как может выглядеть сервлет на принимающем сервере? Вроде этого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class get_xml extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
      //получение SOAP, извлечение XML. Это и непонятно

      //парсинг XML. Это я осилю
      //работа с БД Это тоже ясно
}
}
?
...
Рейтинг: 0 / 0
передача SOAP-сообщений между серверами
    #34606194
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, что-то я не обратил внимание, что ты сказал слово SAAJ :)

читай доки https://saaj.dev.java.net/nonav/spec-1.3/api/, вот, по-моему, судя по описанию, тебе надо MessageFactory

https://saaj.dev.java.net/nonav/spec-1.3/api/javax/xml/soap/MessageFactory.html#createMessage(javax.xml.soap.MimeHeaders, java.io.InputStream)

не оно?
...
Рейтинг: 0 / 0
передача SOAP-сообщений между серверами
    #34606199
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class get_xml extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
      // получение потока байтов response 

      // получение потока символов  response 

      // получение объекта, представляющего интерфейс XmlDocument и т.д.

      // (Если ты сам осилил создание SOAPConnection и отправку SOAPMessage - то 
      // я не вижу причин не сделать обратную операцию.)

      //парсинг XML. Это ты осилишь... и т.д

}
}

Дальше стоит детализировать?
...
Рейтинг: 0 / 0
передача SOAP-сообщений между серверами
    #34606211
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может проще использовать JAXM (пример JAXM-сервлета )?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / передача SOAP-сообщений между серверами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]