2012-01-19 5 views
0

나는 CXF를 배우기 시작했다. Eclipse를 통해 메이븐 아키 타입 프로젝트를 만들었습니다. 내가 빌드를 실행하고 JBoss에 배포하면 잘 작동합니다.Eclipse에서 CXF 사용하기

@WebService 
public interface HelloWorld { 
    String sayHi(String text); 
} 

@WebService(endpointInterface = "foo.HelloWorld") 

    public class HelloWorldImpl implements HelloWorld { 

     public String sayHi(String text) { 

      return new "Hello"+text; 
     } 
    } 

그런 다음 getter 및 setters를 사용하여 필드 이름과 급여로 Employee 클래스를 만들었습니다. HelloWorld sayHi의 메소드를 Employee로 변경하고 HelloWorldimpl sayHi Method에서 Employee 객체를 반환했습니다. 작성이 변환 코드

그리고 또한이 작동 미세 (내가 코드를 수정 한 후 내가 직원 XML을 얻고, SOAP UI를 사용하여 확인 평균)

.

또한 나는 코드에 cxf.xml와 CXF-servlet.xml 파일을 찾을 수 없습니다 : (이 XML 코드에 보관되는 경우)

<import resource="classpath:META-INF/cxf/cxf.xml" /> 
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 

이를 이해하는 데 도와주세요.

@ ŁukaszBachman XML 파일이 CXF * .jar 파일에 있습니다.

이 프로젝트에서 확장 프로그램을 만들려면 어떻게해야합니까? xml 파일에 bean을 추가해야합니까?

+0

개발자 팀, 기고자 또는 자신이하는 일을 절대 알지 못하는 한 CXF 라이브러리의 일부를 수정해서는 안됩니다. 그러나 Spring 및 IoC 덕분에 일부 빈을 확장 할 수 있습니다. 예를 들어, CXF에서 생성하고 XImpl1에서 구현 한 인터페이스 X가있는 경우, XImpl2 구현을 직접 정의하여 CXF로 와이어 링 할 수 있습니다 (해당 라이브러리 작성자가 확장하려는 경우). 일반적으로 확장 할 의도가없는 API의 부분은 확장하지 마십시오. 잘 설계된 API는 원하는대로 사용할 수있는 충분한 유연성을 제공해야합니다. –

답변

0

CLASSPATH에 정의 된 리소스를 가져 오려면 Spring과 함께 CXF를 사용하고있는 것입니다. 이것은 Spring이 제공된 두 파일 (cxf.xml과 cxf-servlet.xml)에 정의 된 모든 종류의 bean을 임포트하려고 시도한다는 것을 의미합니다.

Servlet 컨테이너가 시작할 때 Classloader는 웹 응용 프로그램 (/ WEB-INF/lib 디렉토리)에 정의 된 모든 라이브러리를로드합니다. 그런 다음 Spring 프레임 워크를 시작합니다 (/WEB-INF/web.xml에 정의 됨). spring이로드되면 webapp에 정의 된 모든 Bean을 만들려고하므로 자신의 응용 프로그램 컨텍스트를 분석하여 클래스 경로에 META-INF/cxf/cxf.xml에있는 일부 리소스를 가져와야합니다. 그러면 다시 한번 모든 라이브러리에서 찾을 것입니다. /WEB-INF/lib.

그런 이유로 프로젝트에이 두 파일이 표시되지 않습니다. CXF 라이브러리 (cxf.jar)가 제공합니다. 직접 확인해보고 싶다면 cxf.jar을 일반 ZIP 파일로 열고 /META-INF으로 이동하십시오.

마지막 두 가지 파일은 CXF 프레임 워크에서 제공되므로 수정하지 않아도됩니다. CXF 내부를 이해하는 데 도움이 될 것입니다.

관련 문제