Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / REST-запрос выполнить внутри SOAP-webServicа на WebLogic / 17 сообщений из 17, страница 1 из 1
19.06.2015, 12:20
    #38987747
MVS_2015
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
Доброго времени суток!



Написала простой SOAP-овский WEB-сервис, продетлоин на WebLogic - сервере. Принимаю на вход ХМЛ с одним тегом - строкой, вы выходе тоже один параметр строковый.

В обработчике выполняю REST-запрос к внешнему сервису, получаю информацию и отдаю ее на выход.

Нужно просто через HTTP внутри моего сервиса получить некую инфу и выдать ее за свою.

Вот сам метод
Код: java
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.
//import javax.net.ssl.HttpsURLConnection;

import weblogic.net.http.SOAPHttpsURLConnection;


		public String postExample(String url) throws IOException {
	        String encoding = "*****";

	        SOAPHttpsURLConnection conn;
	        conn = (SOAPHttpsURLConnection) new URL(url).openConnection();
	        conn.setDoOutput(true);
	        conn.setRequestProperty("Authorization", encoding);
	        conn.setRequestProperty("Content-Type", "application/xml");
	        conn.setRequestProperty("Accept", "application/xml");
	        conn.setRequestMethod("POST");

	        String urlParameters = "<req>" +
	                               "  <query>7785966325</query>" +
	                               "</req>";
	        DataOutputStream wr = new DataOutputStream(
	                conn.getOutputStream ());
	        wr.writeBytes (urlParameters);
	        wr.flush ();
	        wr.close ();

	        
	        String html = readStreamToString(conn.getInputStream(), "UTF-8");

	         return html;
	    }



сервис удачно падает с ошибкой:

19.06.2015 11:58:17 com.sun.xml.ws.server.sei.TieHandler createResponse
SEVERE: Tried all: 1 addresses, but could not connect over HTTPS to server: dadata.ru port: 443
java.net.ConnectException: Tried all: 1 addresses, but could not connect over HTTPS to server: dadata.ru port: 443
at weblogic.net.http.HttpsClient.openServer(HttpsClient.java:299)
at weblogic.net.http.HttpsClient.openServer(HttpsClient.java:363)
at weblogic.net.http.HttpsClient.New(HttpsClient.java:518)
at weblogic.net.http.HttpsURLConnection.connect(HttpsURLConnection.java:239)
at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:398)
at weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:37)
at ru.alfastrah.dadata.webservice.CallRestServiceDadata.postExample(CallRestServiceDadata.java:54)
at ru.alfastrah.dadata.webservice.WebServiceDadata.queryDadata(WebServiceDadata.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at weblogic.wsee.jaxws.WLSInstanceResolver$WLSInvoker.invoke(WLSInstanceResolver.java:92)
at weblogic.wsee.jaxws.WLSInstanceResolver$WLSInvoker.invoke(WLSInstanceResolver.java:74)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:149)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:95)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:892)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:841)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:804)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:706)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:430)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:640)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:265)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:163)
at weblogic.wsee.jaxws.WLSServletAdapter.handle(WLSServletAdapter.java:171)
at weblogic.wsee.jaxws.HttpServletAdapter$AuthorizedInvoke.run(HttpServletAdapter.java:708)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
at weblogic.wsee.util.ServerSecurityHelper.authenticatedInvoke(ServerSecurityHelper.java:103)
at weblogic.wsee.jaxws.HttpServletAdapter$3.run(HttpServletAdapter.java:311)
at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter.java:336)
at weblogic.wsee.jaxws.JAXWSServlet.doRequest(JAXWSServlet.java:99)
at weblogic.servlet.http.AbstractAsyncServlet.service(AbstractAsyncServlet.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:216)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:132)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:338)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:221)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3284)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3254)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2163)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2089)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2074)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1513)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)


Сервис по данному адресу доступен и выполняется в любом браузере с моей машине.


Подскажите пож-та, как выполнить HTTP запрос изнутри моего сервиса?
...
Рейтинг: 0 / 0
19.06.2015, 12:40
    #38987801
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
Если это полное исключение, то, возможно, weblogic.net.http.HttpsClient кривой клиент, так как он скрыл cause - изначальную причину ошибки.
SOAP и REST вообще не одно и то же. Не понимаю зачем вы их смешиваете.
Возможно у вас криво составлен запрос и сервер его быстро отрубает. Клиент распознаёт это как ConnectException.
DataOutputStream - бесполезный класс. Он вам не нужен.
...
Рейтинг: 0 / 0
19.06.2015, 13:03
    #38987852
MVS_2015
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
BlazkowiczSOAP и REST вообще не одно и то же. Не понимаю зачем вы их смешиваете.
Возможно у вас криво составлен запрос .

Дело в том что наши системы работают через SOAP, а партнеры предоставили только REST-сервис.

Соответственно запрос этот написан внешней компанией, но он очень шустро работает в браузере
...
Рейтинг: 0 / 0
19.06.2015, 13:16
    #38987878
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
MVS_2015Дело в том что наши системы работают через SOAP, а партнеры предоставили только REST-сервис.

Ну, это как пихать USB штепсель в mini-USB розетку. И там и там ведь USB.
...
Рейтинг: 0 / 0
19.06.2015, 13:16
    #38987880
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
MVS_2015Соответственно запрос этот написан внешней компанией, но он очень шустро работает в браузере
Смотрите дампы HTTP запросов и сравнивайте.
...
Рейтинг: 0 / 0
19.06.2015, 13:36
    #38987937
yelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
Может, все-таки использовать javax.net.ssl.HttpsURLConnection, а не weblogic.net.http.SOAPHttpsURLConnection.
У вас же запрос идет к обычному REST сервису. И никто наличия SOAP Envelope не ожидает.

Через SoapUI получается обратиться к сервису?
Как вы через браузер к сервису обращаетесь?
Авторизуетесь правильно "Authorization: Token ${API_KEY}" ?

Я из трейса поняла, что это сервис от dadata.ru
...
Рейтинг: 0 / 0
19.06.2015, 13:50
    #38987976
yelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
...
Рейтинг: 0 / 0
19.06.2015, 14:21
    #38988063
MVS_2015
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
yelenaЧерез SoapUI получается обратиться к сервису?

Да, к сервису обращаюсь, он живой, но выдает fault-тный ответ

yelenaКак вы через браузер к сервису обращаетесь?
Авторизуетесь правильно "Authorization: Token ${API_KEY}" ?

Я из трейса поняла, что это сервис от dadata.ru

Да, это дадата, Авторизация есть, просто на форуме ее не выкладывала. Из браузера запрос работает

yelenaМожет, все-таки использовать javax.net.ssl.HttpsURLConnection, а не weblogic.net.http.SOAPHttpsURLConnection.
У вас же запрос идет к обычному REST сервису. И никто наличия SOAP Envelope не ожидает.

Да, как раз начинала с этого, но возникла проблема та, что по ссылке http://stackoverflow.com/questions/18512009/weblogic-net-http-soaphttpsurlconnection-cannot-be-cast-to-javax-net-ssl-httpsur, решила ее несколько неправильно, сейчас попробую то, что предлагают:

авторwe are using Weblogic server , we must define

"set JAVA_OPTIONS=%JAVA_OPTIONS% -DUseSunHttpHandler=true" in the class path inside the Server Domain.
...
Рейтинг: 0 / 0
19.06.2015, 16:33
    #38988319
MVS_2015
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
Спасибо, помогло именно использовать javax.net.ssl.HttpsURLConnection и прописать:

set JAVA_OPTIONS=%JAVA_OPTIONS% -DUseSunHttpHandler=true, в домене в папке BIN в файле setDomainEnv

Но теперь другая проблема:

Код: java
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.
19.06.2015 16:50:10 com.sun.xml.ws.server.sei.TieHandler createResponse
SEVERE: Connection refused: connect
java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:529)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:564)
	at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:141)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
	at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:272)
	at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:329)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:172)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:158)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1014)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
	at ru.alfastrah.dadata.webservice.CallRestServiceDadata.postExample(CallRestServiceDadata.java:65)
	at ru.alfastrah.dadata.webservice.WebServiceDadata.queryDadata(WebServiceDadata.java:21)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at weblogic.wsee.jaxws.WLSInstanceResolver$WLSInvoker.invoke(WLSInstanceResolver.java:92)
	at weblogic.wsee.jaxws.WLSInstanceResolver$WLSInvoker.invoke(WLSInstanceResolver.java:74)
	at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:149)
	at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:95)
	at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:892)
	



Видимо что-то (прокси, файервол) не пропускает коннект(
...
Рейтинг: 0 / 0
19.06.2015, 16:36
    #38988325
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
MVS_2015,

Может у вас в браузере прописан прокси?
...
Рейтинг: 0 / 0
19.06.2015, 16:45
    #38988333
MVS_2015
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
Blazkowicz,

комп корпоративный, прокси есть, но в браузере запрос то проходит, прокси вроде не мешает
...
Рейтинг: 0 / 0
19.06.2015, 16:51
    #38988342
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
MVS_2015комп корпоративный, прокси есть, но в браузере запрос то проходит, прокси вроде не мешает
"Да, записная книжка у меня тоже есть" (с)
Вопрос был не в том есть прокси или нет. Вопрос был в том прописан ли он в браузере. В браузере прописан, а в Java - нет. Ни на какие мысли не наводит?
...
Рейтинг: 0 / 0
19.06.2015, 17:13
    #38988364
MVS_2015
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
Blazkowicz,

авторВопрос был в том прописан ли он в браузере. В браузере прописан, а в Java - нет. Ни на какие мысли не наводит?

Use proxy settings from your default browser to connect to the Internet - это в JAVA, в браузере прокси прописан,

попробовала в Жаве прописать, как в браузере, но не помогло.
...
Рейтинг: 0 / 0
19.06.2015, 17:16
    #38988366
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
MVS_2015Use proxy settings from your default browser to connect to the Internet - это в JAVA, в браузере прокси прописан,

Это не в JAVA, а в Java Plug-in. Вашему WebLogic серверу на этот чекбоксик наплевать.

MVS_2015попробовала в Жаве прописать, как в браузере, но не помогло.
А вы не в Жаве попробуйте прописать а в WebLogic
...
Рейтинг: 0 / 0
19.06.2015, 17:46
    #38988391
yelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
MVS_2015yelenaЧерез SoapUI получается обратиться к сервису?

Да, к сервису обращаюсь, он живой, но выдает fault-тный ответ


Дело ясное, что дело темное.
Если к серверу удается обратиться через SoapUI, значит, в этом клиенте прокси сервер уже прописан. А это клиент, написанный на Java.
Значит, как я понимаю, если в свой код добавить
Код: java
1.
2.
System.setProperty("https.proxyHost", proxyHost);  
System.setProperty("https.proxyPort", proxyPort); 


то что-то уже должно с места сдвинуться.
...
Рейтинг: 0 / 0
19.06.2015, 17:49
    #38988399
MVS_2015
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
BlazkowiczMVS_2015Use proxy settings from your default browser to connect to the Internet - это в JAVA, в браузере прокси прописан,

Это не в JAVA, а в Java Plug-in. Вашему WebLogic серверу на этот чекбоксик наплевать.

MVS_2015попробовала в Жаве прописать, как в браузере, но не помогло.
А вы не в Жаве попробуйте прописать а в WebLogic

А где это прописывается - в консоли? в настройках домена (setDomainEnv/startManagedWebLogic/startWebLogic)? или другой вариант?:)
...
Рейтинг: 0 / 0
19.06.2015, 18:12
    #38988428
MVS_2015
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-запрос выполнить внутри SOAP-webServicа на WebLogic
System.setProperty("https.proxyHost", proxyHost);
System.setProperty("https.proxyPort", proxyPort);

то что-то уже должно с места сдвинуться.

Спасибо! Это помогло.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / REST-запрос выполнить внутри SOAP-webServicа на WebLogic / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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