2009-07-17 1 views
2

다른 프로젝트의 클래스를 사용할 때까지 제대로 작동하는 Axis (1.4) 웹 서비스 (Tomcat 6.0.20에서 실행 중)가 있습니다.Java Axis 웹 서비스 프로젝트 종속성을 찾을 수 없음

웹 서비스 프로젝트와 비즈니스 로직을 포함하는 다른 프로젝트가 있습니다. 웹 서비스 프로젝트에서 비즈니스 로직 프로젝트를 프로젝트 종속성/참조로 추가했습니다.

package MyProject.services; 
import BusinessLogic.Core.TestClass; 

    public class MyServiceImpl implements MyProject.services.MyServiceImpl_PortType { 

    public java.lang.String getServerStatus() throws java.rmi.RemoteException { 
      //BusinessLogic.Core.TestClass core = new BusinessLogic.Core.TestClass(); 
      return "This is working fine!"; 
    } 
} 

위의 방법을 호출하면 모든 것이 정상적으로 작동합니다. 그러나 getServerStatus()에서 줄의 주석을 제거하면 NoClassDefFoundException이 발생합니다.

코드는 잘 컴파일되어 있으며 모든 필연적으로 추가 된 것을 볼 수 있습니다. TestClass에는 "Hello"를 인쇄하고 다른 종속성이없는 생성자 만 있습니다.

나는 자바 웹 서비스에 비교적 익숙하기 때문에 아마도 내가 만든 바보 같은 실수 일 것이다. 어떤 아이디어가 있습니까?

답변

2

하는 데 도움이 프로젝트. 이것이 Tomcat 내부의 WAR 파일/폴더를 의미한다면, 한 웹 애플리케이션이 다른 웹 애플리케이션을 직접 볼 수는 없다는 것입니다 (클래스 경로 포함).

그렇다면 질문을 편집하여보고있는 것과 예상 한 것에 대해 구체적으로 설정하십시오.

+0

Eclipse에서 다른 프로젝트를 의미합니다. 나는 네임 스페이스를 가져오고 클래스를 사용하는 프로젝트 참조를 추가하는 것이다. 이 클래스는 서비스를 호출 할 때 발견되지 않습니다. – Ezombort

+1

WAR 파일에 배포 할 구성 요소를 제어하는 ​​환경 설정 -> Java EE 모듈 종속성을 알고 있습니까? 또한 7zip을 사용하면 쉽게 항아리/전쟁/인트로 스펙이 가능합니다. 나는 그 수업이 전개되지 않았다고 믿는다. –

+0

아니요. 그 사실을 알지 못했습니다. 프로젝트를 환경 설정 -> Java 빌드 경로 설정에 추가했습니다. 고마워요! – Ezombort

1

당신이 이것을 어떻게 구축하고 배포하는지는 말하지 않았습니다. TestClass는 jar 파일에 있습니까? 그렇다면 배포 된 시스템의 jar 파일은 어디에 있으며 웹 서비스 클래스는 어떻게 배포됩니까?

+0

저는 Eclipse에서 Tomcat을 실행하여 로컬에서 테스트하고 있습니다. TestClass는 작업 공간의 다른 프로젝트에 있으며 Eclipse (Jave Buil Path/Projects)의 BusinessLogic 프로젝트에 대한 참조가 추가되었습니다. 서비스 자체는 잘 작동하고 있으며 서비스 구현시 TestClass를 사용하지 않는 한 .NET 프로젝트에서 액세스/호출 할 수 있습니다. – Ezombort

+0

Tomcat이 어떻게 실행되고 있는지, 그리고 TestClass가 끝나는 곳을 정확히 볼 필요가있다. 개인적으로 항상 배포 된 관점에서 Tomcat을 디버깅하는 것을 선호했습니다. 즉, 프로덕션을 위해 수행 할 패키징을 수행 한 다음 디버거를 실행합니다. 생산에 문제가있는 경우에만 이러한 문제가 문제가된다는 의미입니다. –

+0

좋아, 내 서버에 서비스를 배포하려고합니다. 디버깅을 위해 어떤 도구를 선호합니까? – Ezombort

1

이 질문에 대한 답변하지 않습니다하지만 당신은이 무료 soapui

가 생성 된 WSDL을보고 서비스의 메소드를 호출 할 수 있습니다. 이것은 당신이 컴파일하고

희망을 (당신이 나중 단계에서해야 할 것이다) 두 번째 테스트 클라이언트에 스텁을 배포하지 않고 서비스를 테스트 할 수 있다는 것을 의미한다이 당신이 다른 그들이 있다고

+0

니스, 고마워. 시도해 볼게. – Ezombort