2011-08-22 14 views
1

다른 Axis 서비스에서 배포 된 Axis 서비스 목록을 얻는 방법에 대한 질문이 있습니다. 여기 시나리오가 있습니다. Tomcat 7.0.14와 Axis 2-1.5.5를 배포 환경으로 사용하고 있습니다. 현재 Tomcat에 배포 된 5 개의 Axis 서비스, 즉 A, B, C, D, E가 있다고 가정합니다. 그리고 서비스 E에 코드를 작성하여 배포 된 모든 서비스를 포함하는 서비스 목록을 얻을 수 있도록합니다. 즉 A , B, C, D, E.다른 Axis 서비스에서 배포 된 Axis 서비스 목록 가져 오기

나는 ConfigurationContextFactory.createConfigurationContextFromSystem() 메서드를 사용하려고 시도했다. 그러나이 메소드는 호출 될 때마다 새로운 Axis 2 객체를 생성하는 것처럼 보였다. 그리고 웹 서비스의 생성자에서 사용했기 때문에 무한 루프가 발생했습니다. (축 인스턴스 생성 -> 서비스 인스턴스 생성 -> 축 인스턴스 생성 -> 서비스 인스턴스 생성 -> ...) 그래서 배포 된 서비스 목록을 프로그래밍 방식으로 다른 배포 된 서비스에서 가져 오는 방법을 알고 싶습니다. (http://localhost:8080/axis2/services/listServices처럼). 어떤 도움이라도 대단히 감사합니다.

감사합니다.

답변

1

환경의 AxisConfiguration 개체를 가져와야합니다. 그것은 무엇보다도 getServices()이라는 함수를 제공하여 설치된 서비스의 맵을 반환합니다.

서비스가 ServiceLifecycle을 구현하는 경우 서비스 시작 중에 ServiceLifecycle.startup() 함수가 AxisConfiguration 객체에 전달됩니다. 또는 서비스 클래스가 Lifecycle을 구현하는 경우 Lifecycle.init() 함수에 ServiceContext 개체가 전달됩니다. 거기에서 AxisConfiguration을 얻으려면 ServiceContext.getConfigurationContext().getAxisConfiguration()에 전화 할 수 있어야합니다.

+0

대단히 감사합니다. Kenster! 웹 서비스에서 ServiceLifeCycle 인터페이스를 구현하려고 시도했지만 배포 중에 startup() 메서드가 호출되지 않습니다. Axis 엔진에서이 메서드를 호출하는 방법에 대한 아이디어가 있습니까? 그건 그렇고, 나는 웹 서비스를 POJO 서비스로 작성한다. 아마 그게 문제 야? 당신의 도움을 주셔서 감사합니다. – David

+0

Lifecycle 인터페이스를 구현하여 작동하도록했습니다. 이제 올바르게 작동합니다. 감사! 관심있는 사람들에게 ServiceLifeCycle과 Lifecycle의 차이점을 설명하는 기사가 있습니다. [link] (http://blog.facilelogin.com/2008/11/axis2-services-lifecycle-vs.html) – David

+0

그 기사는 가능한 한 철자를 쓰지 않습니다. ServiceLifecycle 기능을 사용하려면 services.xml 파일의'service' 요소에'class = "my.service.lifecycle.class"속성을 추가해야합니다. 일단 Axis2가 처음 서비스를로드하면'startup()'이 호출되고, Axis2가 종료되면'shutdown()'이 호출됩니다. – Kenster