Meus amigos,
Desculpem por estar repetindo a mesma pergunta, mas ainda estou com o mesmo problema. Tenho pesquisado na internet, mas não consegui uma resposta.
Estou construindo uma parte do site que é para administração do próprio site. Para não misturar as páginas (JSP e Servlet) deste módulo de administração com as demais páginas do site, criei outros subdiretórios comforme mostrado abaixo:
Para os JSPs do site
c: / tomcat / webapps / meuSite
Para os JSPs do módulo Administrador (criei um subdiretório administrador embaixo do diretório do site)
c: / tomcat / webapps / meuSite / administrador
Para os Servlets do site
c: / tomcat / webapps / meuSite / web-inf / classes
Para os Servlets do módulo Administrador (criei um subdiretório administrador embaixo do diretório do classes)
c: / tomcat / webapps / meuSite / web-inf / classes / administrador
A minha dúvida é de como configurar o arquivo web.xml ou outra coisa qualquer que precise ser configurada com esse novo subdiretório, para que eu consiga chamar o servlet pelo JSP.
Eu configurei o web.xml da seguinte forma:
<servlet>
<servlet-name>TestaAcesso</servlet-name>
<servlet-class>administrador.TestaAcesso</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestaAcesso</servlet-name>
/TestaAcesso
</servlet-mapping>
Onde TestaAcesso é o meu servlet e administrador é o subdiretório onde está o servlet, criado abaixo do subdiretório classes .
Quando eu chamo o JSP no browser com http://localhost:8080/divecenter/administrador/index.jsp, funciona normalmente. Mas quando o index.jsp chama o servlet TestaAcesso, dá o seguinte erro:
type - Status report
message - /divecenter/administrador/TestaAcesso
description - The requested resource (/divecenter/administrador/TestaAcesso) is not available.
Ou seja, o servlet não foi encontrado, mas na verdade está lá.
Quando eu configuro o web.xml conforme abaixo:
<servlet-mapping>
<servlet-name>TestaAcesso</servlet-name>
/administrador/TestaAcesso
</servlet-mapping>
O JSP continua funcionando, mas quando o index.jsp chama o servlet TestaAcesso, dá o seguinte erro:
type - Exception report
message -
description - The server encountered an internal error () that prevented it from fulfilling this request.
exception -
javax.servlet.ServletException: Error allocating a servlet instance
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:672)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
.
.
.
root cause
java.lang.NoClassDefFoundError: administrador/TestaAcesso (wrong name: TestaAcesso)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
.
.
.
Alguém pode me dizer o que está errado? Ou até me dizer se isso que estou tentando fazer, ou seja, criar esses subdiretórios para separar os JSPs e servlets do módulo administrador, é ou não possível?
Abraços,