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

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

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

во-первых SOAP уже давно стал синонимом слова веб сервис, хотя может действительно использоваться в утилитарных целях...
А так, по сути, если совсем уж в общих словах... ты одним серваком через URL коннекшн коннектишься на свой сервлет, кстати, какую версию соапа ты собрался испльзовать? Учти, они не совместимы... Далее ты окрываешь потоки, с одной стороны на чтение, с другой стороны на запись, пишешь туда свой соап энвелоп... В соответствие со схемой выбраной версии, она в инете есть. Потом парсером разбираешь конверт, достаешь, там, хидеры, боди, разбираешь их и т.д...взял бы лучше вебсервис, там это все уже за тебя давно и грамотно написали...
...
Рейтинг: 0 / 0
19.06.2007, 20:16:28
    #34606125
s_petrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача SOAP-сообщений между серверами
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
19.06.2007, 20:24:40
    #34606138
s_petrov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача SOAP-сообщений между серверами
ох, извините за форматирование, случайно отправил. Исправляюсь:
Код: 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
19.06.2007, 21:23:04
    #34606194
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача SOAP-сообщений между серверами
а, что-то я не обратил внимание, что ты сказал слово 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
19.06.2007, 21:28:02
    #34606199
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача SOAP-сообщений между серверами
Код: 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
19.06.2007, 21:38:22
    #34606211
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
передача SOAP-сообщений между серверами
Может проще использовать JAXM (пример JAXM-сервлета )?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / передача SOAP-сообщений между серверами / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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