2012-03-16 5 views
3

Axis 1.4 생성 웹 서비스 클라이언트 코드에서 사용하는 표준 옵션을 변경하는 데 문제가 있습니다. 우리는 기존 RPC/인코딩 스타일을 사용하는 파트너의 특정 웹 서비스를 사용합니다. 기본적으로 우리는 Axis 2를 사용할 수 없지만 Axis 1.4에만 국한됩니다.Axis 1.4 생성 된 SOAP Java 클라이언트의 시간 초과 설정을 변경하십시오.

서비스 클라이언트가 실제로 잘 실행되는 프록시를 통해 원격 서버에서 데이터를 검색하고 있습니다.

우리의 응용 프로그램은 서블릿으로 배포됩니다. 외부 웹 서비스의 검색된 응답은 내부 시스템/CMS에 제공되는 (XML) 문서에 삽입됩니다. 외부 서비스가 응답하지 않는 경우 (아직 발생하지 않았지만 언제든지 발생할 수 있음) 우리는 공감할 수있는 시간 내에 계산 된 웹 서비스 정보없이 멋지게 성능을 저하시키고 생성 된 XML 문서를 반환하고자합니다. 검색된 데이터는 선택 사항입니다 (이 특정 계산이 누락 된 경우 큰 문제는 아닙니다).

그래서 시간 초과 설정을 변경하려고했습니다. 나는 모든 문서를 찾을 수있는 모든 방법과 키를 적용/사용하여 웹 검색을 통해 연결과 소켓 타임 아웃을 변경했습니다. 이들 중 어느 것도 연결 시간 초과에 영향을 미치는 것 같지 않습니다.

버전 1.4를 기준으로 축 스텁/서비스/포트 설정을 변경하는 방법에 대해 조언 해 줄 수 있습니까?

MyService service = new MyServiceLocator(); 
MyServicePort port = null; 

try { 
    port = service.getMyServicePort(); 
    javax.xml.rpc.Stub stub = (javax.xml.rpc.Stub) port; 
    stub._setProperty("axis.connection.timeout", 10); 
    stub._setProperty(org.apache.axis.client.Call.CONNECTION_TIMEOUT_PROPERTY, 10); 
    stub._setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, 10); 
    stub._setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, 10); 

    AxisProperties.setProperty("axis.connection.timeout", "10"); 
    AxisProperties.setProperty(org.apache.axis.client.Call.CONNECTION_TIMEOUT_PROPERTY, "10"); 
    AxisProperties.setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, "10"); 
    AxisProperties.setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, "10"); 

    logger.error(AxisProperties.getProperties()); 

    service = new MyClimateServiceLocator(); 
    port = service.getMyServicePort(); 
} 

나는 서비스의 생성 전에 속성 변경을 할당 한 후, 나는 초기화하는 동안 속성, 나는 내가 찾은 몇 가지 다른 시간 제한 키를 시도 설정 : 여기

내가 시도 여러 구성에 대한 예입니다 , ... 나는 그것에 관해 화를 내고 있고, 내가 벌써 시험했던 것을 잊는 것을 시작한다라고 생각한다!

내가 뭘 잘못하고 있니? 옵션이 있어야한다는 뜻인가요?

적절한 솔루션을 찾지 못하면 코드에서 시간 초과가 발생하여 동기화 된 스레드를 설정하는 것에 대해 생각해 보았습니다. 실제로는 상당히 어색하고 다소 어리석은 느낌이 들었습니다. 다른 것을 상상할 수 있습니까? 사전에

감사

옌스


axis1.4 자바 클라이언트 비누 WSDL2Java가의 RPC/인코딩 된 XML 서블릿은 내가있을 수 있습니다 생각 설정 변경 스텁 시간 제한 연결 소켓 키 방법

+1

이 문제에 대한 해결책을 찾았습니까? – Stainedart

답변

0

Typecast 서비스 포트 객체를 org.apache.axis.client.Stub.

(즉) org.apache.axis.client.Stub 스텁 = (org.apache.axis.client.Stub) 포트;

stub._setProperty (org.apache.axis.client.Call :

그런 다음 모든 속성을 설정합니다.CONNECTION_TIMEOUT_PROPERTY, 10); stub._setProperty (DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, 10); stub._setProperty (DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, 10);

+1

위의 솔루션이 작동하지 않습니다. Axis 1.4 및 Java 1.7 사용. 사실, Axis 읽기 타임 아웃을위한 단일 접근법이 아닙니다 ... 놀라움! 아래 링크에서 언급 된 모든 옵션을 시도했습니다. http://wiki.apache.org/ws/FrontPage/Axis/AxisCommonsHTTP -/- http://www.coderanch.com/t/544075/Web-Services/ java/set-timeout-Axis-client -/- https://samaxes.com/2009/04/axis-14-read-timed-out-and-http-11/ – Santosh