Моя задача - разработать веб-приложение с использованием JSF2, EJB3 на сервере приложений JBOSS7.
Приложение очень простое, однако мне нужно использовать веб-сервис, разработанный другими людьми (soap / wsdl).
С помощью SOAPUI указанный веб-сервис работает отлично.
Проблема: при интеграции в код Java появляется сообщение об ошибке: « Сервер отправил код состояния HTTP 404: null »
Могу ли я получить ваш совет?
Спасибо
* WSDL 1006 *
введите описание изображения здесь
Тест с SoapUi:
введите описание изображения здесь
Примечание: На этапе тестирования с soapUi необходимо вручную объединить URL-адрес конечной точки и значение soapaction.
Класс: ResponseHeader.java
package com.myproject.site;
public class ResponseHeader {
private int code;
public ResponseHeader() {
super();
// TODO Auto-generated constructor stub
}
public ResponseHeader(int code) {
super();
this.code = code;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
Интерфейс SiteService.java:
package com.myproject.site;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService(targetNamespace = "http://www.monsite.com/webservices/app-homeSecurityValidation-ws", name = "app-homeSecurityValidation-ws")
public interface SiteService {
@WebMethod
public ResponseHeader HomeSecurityValidationRequest(
@WebParam(name = "verif", targetNamespace = "")
java.lang.String verif,
@WebParam(name = "login", targetNamespace = "")
java.lang.String account,
@WebParam(name = "password", targetNamespace = "")
java.lang.String password
) ;
}
класс main Test.java:
package com.myproject.site;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Service;
public class Test {
public static void main(String[] args) throws SOAPException, IOException {
try {
String soapEndpointUrl = "http://10.168.12.12:8080/homeSecurityValidation/app-homeSecurityValidation-ws";
String soapAction = "homeSecurityValidation";
URL url = new URL("http://10.168.12.12:8080/homeSecurityValidation/app-homeSecurityValidation-ws.wsdl");
QName qName = new QName("http://www.monsite.com/webservices/app-homeSecurityValidation-ws",
"app-homeSecurityValidation-ws");
/*********/
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.addHeader("SOAPAction", soapAction);
soapMessage.saveChanges();
Service service = Service.create(url, qName);
SiteService hello = (SiteService) service.getPort(SiteService.class);
BindingProvider bp = (BindingProvider) hello;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, soapEndpointUrl);
ResponseHeader r = hello.HomeSecurityValidationRequest("OK",
"mylogin",
"mypassword");
System.out.println("response: " + r.getCode());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
Консольное затмение
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 404: null
atcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:296)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:245)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:203)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:122)
at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:123)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:626)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:585)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:570)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:467)
at com.sun.xml.internal.ws.client.Stub.process(Stub.java:308)
at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:163)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:135)
at com.sun.proxy.$Proxy10.homeSecurityValidationRequest(Unknown Source)
at com.myproject.site.Test.main(Test.java:49)
Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="Sun Microsystems Inc."