2010-01-21 2 views
1

Tomcat에서 작동하는 webservice가 있습니다. 끝점 URL을 전쟁 외부의 파일로 추출하여 전쟁을 재배포 할 필요없이 변경할 수 있습니다. Windows XP에서 Tomcat 6 독립 실행 형으로 로컬로 실행됩니다.Tomcat이 웹 서비스의 컨텍스트를 인식하지 못합니다.

내 생각 엔 컨텍스트에서 컨텍스트 매개 변수 또는 환경 변수 중 하나를 가져야한다고 생각했습니다.

나는 어느 것이 더 좋았는지 확실하지 않았고 Context를 인식 할 수 없기 때문에 어떤 것이 효과가 있을지 전혀 모른다. 그래서 첫 번째 질문, 아래 항목 중 어느 것을 사용해야합니까? 환경 라인을 가정

<Context path="/myapp" docBase="myapp"> 

<Environment name="webserviceURI" type="java.lang.String" override="true" value="endpointURLredacted"/> 

<context-parameter> 
<name>uri</name> 
<value>endpointURLredacted</value> 
</context-parameter> 

</Context> 

정확한 검색, 내 코드는 다음과 같습니다 그러나

InitialContext ic = new InitialContext(); 
endpoint = (String)ic.lookup("webserviceURI"); 

....

내가 META에의 context.xml 파일이 추가 시도 -INF 폴더에 복사 해 놓았고 WAR를 배포 할 때 여기에 다른 질문의 답을 인용하기 위해 "WAR를 배포 할 때 컨텍스트 프래그먼트 (META-INF/context.xml)가 conf에 복사됩니다/Catalina/[host] 디렉토리에 있습니다. " 음, 그런 일은 일어나지 않습니다. 나는 그 방법을 정말로하고 싶지 않습니다, 왜냐하면 나는 문맥이 전쟁과 완전히 분리되어 있기를 원하기 때문입니다. 그러나 나는 심지어 그것을 얻을 수 있는지를 시험하는 시험이었습니다. 실패.

그래서 수동으로 해당 폴더에 컨텍스트 xml (myapp.xml로 이름이 바뀜)을 추가하려고 시도했지만 여전히 파일이 읽히지 않는다고 생각합니다.

응용 프로그램을 실행할 때 "javax.naming.NameNotFoundException : Name webserviceURI가이 컨텍스트에 바인딩되지 않았습니다."와 같은 오류가 발생합니다. 내가 초기 문맥의 환경을 인쇄 시도

:

Context:  {java.naming.factory.initial=org.apache.naming.java.javaURLContextFactory,java.naming.factory.url.pkgs=org.apache.naming} 

그래서 내가 컨텍스트 파일을 생각하지 않습니다가, 내가 그것을 넣어 아무리 읽어지고 있습니다.

이것은 중요한 경우 서블릿이 아닙니다 (어쩌면 있어야할까요?).

답변

2

컨텍스트에서 docBase 특성을 삭제하고 환경 태그를 사용하며 java : comp/env/webserviceURI를 사용하여 값을 검색하고 voila! 성공.

어쩌면 다른 사람을 도울 것입니다!