CXF과 스프링을 사용하여 JBoss 5.1에 내 웹 서비스를 게시하고 사용할 수 있습니다. 모두 잘 작동합니다. 잭스 - WS를 넣어 : applicationContext.xml의 모든 WebService에 대한 엔드 포인트 태그<jaxws : endpoint /> 주석이 있습니까?
그러나, 나는 매우 지루한 생각의 일이있다.
실제로 특수 효과를 사용하여이를 수행 할 방법이 없습니까? 감사합니다.
CXF과 스프링을 사용하여 JBoss 5.1에 내 웹 서비스를 게시하고 사용할 수 있습니다. 모두 잘 작동합니다. 잭스 - WS를 넣어 : applicationContext.xml의 모든 WebService에 대한 엔드 포인트 태그<jaxws : endpoint /> 주석이 있습니까?
그러나, 나는 매우 지루한 생각의 일이있다.
실제로 특수 효과를 사용하여이를 수행 할 방법이 없습니까? 감사합니다.
<jaxws:endpoint>
에 넣을 수있는 내용을 구성하려면 some annotations이 있습니다. CXF 엔드 포인트를 선언하는 주석이 유용 할 것입니다.
Spring XML 대신 코드를 사용하여 엔드 포인트를 구성 할 수 있습니다. 팩터 아웃을 반복 할 수있는 구성이 많은 경우이 방법이 유용 할 수 있습니다. 또는 다른 환경에서 다르게 구성된 특정 엔드 포인트가있는 경우. 예를 들어
:
@Autowired var authImpl: Auth = _
@Autowired var faultListener: FaultListener = _
def initWebServices() {
var sf: JaxWsServerFactoryBean = _
val propMap = mutable.HashMap[String, AnyRef]("org.apache.cxf.logging.FaultListener"->faultListener.asInstanceOf[AnyRef])
sf = new JaxWsServerFactoryBean
sf.setServiceBean(authImpl)
sf.setAddress("/auth")
sf.setServiceName(new QName("http://auth.ws.foo.com/", "auth", "AuthService"))
sf.setProperties(propMap)
sf.create
// more services...
시간이 패스로, 새로운 가능성이 발생한다.
CXF/SpringBoot (SpringBoot : 1.2.3, CXF : 3.10, Spring : 4.1.6)와 함께 cxf-servlet.xml의 jaxws : 끝점 구성을 없애기위한 좋은 대안이 있습니다. jonashackt은 nabble.com에 지적했다. 그러나이 솔루션은 응용 프로그램에 단 하나의 끝 점이있는 경우에만 가능합니다 (적어도 하나 이상의 구성에 성공하지 못했습니다).
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public ServletRegistrationBean dispatcherServlet() {
CXFServlet cxfServlet = new CXFServlet();
return new ServletRegistrationBean(cxfServlet, "/api/*");
}
@Bean(name="cxf")
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public MyServicePortType myService() {
return new MyServiceImpl();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), myService());
endpoint.publish("/MyService");
return endpoint;
}
여기서 MyServicePortType은 @WebService 주석이있는 클래스입니다. 그런 다음이 끝점은 "localhost : 8080/api/MyService"와 같은 URL에 대해 호출됩니다.
물론 이러한 @Bean 선언은 다른 스프링 구성 클래스에 배치 될 수 있습니다. 나는 ") (새 SpringBus"대신 직접의 팩토리 메소드를 사용하여 버스 (CXF-콩)를 인스턴스화하는 것이 좋습니다 복사 된 원래의 솔루션에 반하는에서
: 당신이 말한 것처럼
BusFactory.newInstance().createBus()
될 것 끝점에 대한 주석이 있으면 아주 멋지다. 나는 이것이 어떻게 아직 만들어지지 않았는지 이해하지 못한다. –