웹 서비스 URL 끝점을 변경하는 방법
Eclipse 'web service client from a wsdl'을 사용하여 JBoss utils(JAX-WS 호환)를 사용하여 웹 서비스 클라이언트를 생성했습니다.
웹 서비스 WSDL에 대한 URL만 제공했습니다.
이제 웹 서비스 공급자는 웹 서비스의 "클라이언트 엔드포인트응용 프로그램 액세스 URL"을 변경하라고 지시합니다.
무엇이며 어떻게 변경합니까?
IMO에서 서비스 엔드포인트(즉, 웹 서비스에 도달하는 위치)를 변경하라고 지시하고 있습니다.클라이언트 엔드포인트(무슨 말인지 알 수 없습니다)는 변경할 수 없습니다.서비스 엔드포인트를 변경하려면 기본적으로 두 가지 옵션이 있습니다.
바인딩 공급자를 사용하여 끝점 URL 설정
첫 번째 선택지는 다음 명령어를 변경하는 것입니다.BindingProvider.ENDPOINT_ADDRESS_PROPERTY
의 속성값BindingProvider
(모든 프록시의 실장)javax.xml.ws.BindingProvider
인터페이스):
...
EchoService service = new EchoService();
Echo port = service.getEchoPort();
/* Set NEW Endpoint Location */
String endpointURL = "http://NEW_ENDPOINT_URL";
BindingProvider bp = (BindingProvider)port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
System.out.println("Server said: " + echo.echo(args[0]));
...
단점은 원래 WSDL에 아직 액세스할 수 있는 경우에만 이 기능이 작동한다는 것입니다.권장하지 않습니다.
WSDL을 사용하여 엔드포인트 URL을 가져옵니다.
두 번째 옵션은 WSDL에서 엔드포인트 URL을 가져오는 것입니다.
...
URL newEndpoint = new URL("NEW_ENDPOINT_URL");
QName qname = new QName("http://ws.mycompany.tld","EchoService");
EchoService service = new EchoService(newEndpoint, qname);
Echo port = service.getEchoPort();
System.out.println("Server said: " + echo.echo(args[0]));
...
여기에 설명을 덧붙이자면 서비스를 작성할 때 서비스 클래스는 기본 'wsdlLocation'을 사용합니다.이러한 클래스는 wsdl에서 클래스를 빌드할 때 삽입되었습니다.SomeService라는 서비스 클래스가 있고 다음과 같은 인스턴스를 만드는 경우:
SomeService someService = new SomeService();
Some Service 내부를 보면 컨스트럭터는 다음과 같습니다.
public SomeService() {
super(__getWsdlLocation(), SOMESERVICE_QNAME);
}
따라서 다른 URL을 가리킬 경우 URL 인수를 사용하는 컨스트럭터를 사용합니다(qname 및 기능을 설정하는 컨스트럭터도 6개 있습니다).예를 들어 포트 9999에서 수신 중인 로컬 TCP/IP 모니터를 설정하고 해당 URL로 리다이렉트하는 경우:
URL newWsdlLocation = new URL("http://theServerName:9999/somePath");
SomeService someService = new SomeService(newWsdlLocation);
서비스 내의 컨스트럭터를 호출합니다.
public SomeService(URL wsdlLocation) {
super(wsdlLocation, SOMESERVICE_QNAME);
}
@Femi까지는 기존 주소 속성을 변경하지 않습니다.정의 섹션에 새 서비스를 쉽게 추가할 수 있습니다.
<wsdl:service name="serviceMethodName_2">
<wsdl:port binding="tns:serviceMethodNameSoapBinding" name="serviceMethodName">
<soap:address location="http://new_end_point_adress"/>
</wsdl:port>
</wsdl:service>
이 경우 WSDL을 Java로 재컴파일할 필요가 없으며 업데이트는 Binding Provider 옵션을 사용한 경우와 마찬가지로 어렵지 않습니다(BTW에서는 동작하지 않았습니다).
끝 주소 속성을 변경하려면 wsdl 파일을 편집합니다.
<wsdl:definitions.......
<wsdl:service name="serviceMethodName">
<wsdl:port binding="tns:serviceMethodNameSoapBinding" name="serviceMethodName">
<soap:address location="http://service_end_point_adress"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
언급URL : https://stackoverflow.com/questions/2490737/how-to-change-webservice-url-endpoint
'programing' 카테고리의 다른 글
커스텀 커넥터를 사용하여 Django에서 MySQL/MariaDB 연결을 적절하게 끊는 방법 (0) | 2022.11.22 |
---|---|
String Utils 입니다.EMPTY를 권장합니다. (0) | 2022.11.22 |
MySQL에서 두 개의 단일 열 인덱스와 하나의 두 열 인덱스를 비교하시겠습니까? (0) | 2022.11.21 |
요청이 GET인지 POST인지 확인합니다. (0) | 2022.11.21 |
MySQL/MariaDB의 다른 행에 있는 동일한 열에 있는 두 셀의 데이터를 병합합니다. (0) | 2022.11.21 |