Definir URL Servlet.service

15 respostas
S

System.out.println(“Olá amigos”);

Gostaria de saber onde eu defino minha URL no WEB.XML em uma aplicação Struts+Framework, estou com paginas JSP em que estao fungando perfeitamente mas esta url que esta sendo meu maior problema, nao sei como definila em meu decumento WEB.XML, minha seção esta assim:

<!-- Standard Action Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>jdbc:mysql://localhost;strutsdemo</url-pattern>
    </servlet-mapping>


    <!-- The Usual Welcome File List -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>


    <!-- Struts Tag Library Descriptors -->
    <taglib>
        <taglib-uri>/tags/struts-bean</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>

na quarta linha vera que tentei definir mas nao sei se esta correto ou se o erro nao esta somente ai em minha aplicação, por favor me de um help ae .

Gratos pela atenção
Kleber Gracia

15 Respostas

D

fera…nao entendi!

Que URL é essa q. vc está tentando definir? é a URL do domínio do programa?
tipo…quero q. seja acessado por http://meuprograma.com.br ?
é isso?

ou vc está com dificuldade nos mappings dos servlets?

t+

S

Olá amigo, nao estou sabendo me expressar direito me desculpe, é que estou fazendo uma conexao com DataSource por estar usando JSP+TomCat ai estou com dificuldades de entender os nomes, em minha classe esta assim mas nao sei se esta certo:

InitialContext ic = new InitialContext();
                //para conexao com o tomcat use
                dataSource = (DataSource) ic.lookup("java:comp/env/strutsdemo");

veja que o nome é (java:comp/env/strutsdemo) nao sei se isto esta correto, ai na minha configuracao do SERVER.XML que fica dentro do Tomcat tive que criar isso:

<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">

	<DefaultContext>
		<Resource name="strutsdemo" auth="Container" type="javax.sql.DataSource" scope="Shareable"/>
			<ResourceParams name="strutsdemo">
<parameter><name>factory</name><value>org.apache.commons.dbcp.BasicDataSourceFactory</value></parameter>
<parameter><name>driverClassName</name><value>com.mysql.jdbc.Driver</value></parameter>
<parameter><name>url</name><value>jdbc:mysql://localhost/strutsdemo</value></parameter>
<parameter><name>username</name><value>root</value></parameter>
<parameter><name>password</name><value>solo23</value></parameter>
<parameter><name>maxActive</name><value>20</value></parameter>
<parameter><name>maxIdle</name><value>10</value></parameter>
<parameter><name>maxWait</name><value>100</value></parameter>
		</ResourceParams>
	</DefaultContext>
	</Host>

onde vc ve que tem uma linha que contem (jdbc:mysql://localhost/strutsdemo) em que tbm nao sei se isso esta fungando e se é relacionado ao meu de cima, ai tenho o do WEX.XML da minha aplicação que fica dentro do projeto e que tbm nao sei se esta correto em que esta assim:

<!-- Standard Action Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>jdbc:mysql://localhost/strutsdemo</url-pattern>
    </servlet-mapping>

em que tudo isso se resumo assim.
Ele gera um erro dizendo que minha url é invalida, nao sei agora qual ele chama primeiro entende. O erro é este abaixo:

javax.servlet.ServletException: Cannot create redirect URL: java.net.MalformedURLException: Cannot retrieve ActionForward named error
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)


root cause 

javax.servlet.jsp.JspException: Cannot create redirect URL: java.net.MalformedURLException: Cannot retrieve ActionForward named error
	org.apache.struts.taglib.logic.RedirectTag.generateRedirectURL(RedirectTag.java:309)

ai é que esta minha duvida, que Merd… de URL eu tenho que adicionar para que minha aplicação funge. To desesperado. help amigo.

Kleber Gracia
Development.

S

Olá pessoal, socorro por favor, please.

P

cara, o q vc quer dizer quando fala “Struts+Framework” ???

outra coisa…pra q vc precisa colocar os parametros do seu banco no server.xml? alias, da onde vc tirou aquela url???

Pelo que ta parecendo, é um exemplo do struts que vc esta tentando rodar, é isso??? Se for isso, parece que esse exemplo não dos mais intuitivos e explicativos…eu sinceramente aconselho vc conseguir o livro “Struts in Action”, ou “Struts em ação” (eu prefiro a versão em ingles) que pode te ajudar…

As suas dúvidas não estão claras…tente procurar um outro exemplo de utilização do struts…no site da caelum www.caelum.com.br (eu sei q eles são do GUJ, hehehe) é possivel baixar a apostila do curso de desenvolvimento web…talvez possa te ajudar…

Falow…

D

ow…
agora entendi…
bom, se vc criou um DS no Tomcat…informou um nome JNDI para esse recurso.

O correto é implementar o pattern ServiceLocator para localizar esse recurso para as tuas classes DAO.

e no web.xml da tua aplicação, vc deve declarar o recurso da seguinte forma:

<resource-ref>
    <res-ref-name>jdbc/seurecursoPooling</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
  </resource-ref>

entendeu?

qquer coisa…posta aí!

t+

S

Olá Srta. nao sei onde adicionar estas linhas, e quando adiciono em algum lugar da pau justamente nelas, eu tenho que fazer mais alguma coisa pra poder adicionar estas linhas, ve no seu MP, eu lhe enviei o WEB.XML grato.

Kleber Gracia
Development

D

Adiciona logo abaixo dos Servlet-Mappgin…

t+

S

Olá Srta Daiana, segue io codigo do WEB.XML, estou com este problema e nao sei arrumar, na verdade estou tentando fazer uma conexao pool que gerencie minha conexao mas nao sei definir o URL no WEB.XML veja:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
    
    <display-name>Projeto Tutorial Struts</display-name>
    <!-- Context Configuration locations for Spring XML files -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/web.xml
            /WEB-INF/validation.xml
            /WEB-INF/struts-config.xml
        </param-value>
    </context-param>   

    
    <!-- Standard Action Servlet Configuration (with debugging) -->
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>2</param-value>
        </init-param>
        <init-param>
            <param-name>detail</param-name>
            <param-value>2</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>


    <!-- Standard Action Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    

    <!-- The Usual Welcome File List -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>


    <!-- Struts Tag Library Descriptors -->
    <taglib>
        <taglib-uri>/tags/struts-bean</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-html</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-logic</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-nested</taglib-uri>
        <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-tiles</taglib-uri>
        <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
    </taglib>

</web-app>

ai ele tambem da um erro na minha classe em que esta a conexao com o banco de dados na linha da URL:

LINHA DO ERRO

dataSource = (DataSource) ic.lookup("java:comp/env/jdbc/StrutsDemoDS");

esta linha acima é a linha da minha classe, mas nao sei se esta certo.

S

Olá Srta Daiana, segue io codigo do WEB.XML, estou com este problema e nao sei arrumar, na verdade estou tentando fazer uma conexao pool que gerencie minha conexao mas nao sei definir o URL no WEB.XML veja:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
    
    <display-name>Projeto Tutorial Struts</display-name>
    <!-- Context Configuration locations for Spring XML files -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/web.xml
            /WEB-INF/validation.xml
            /WEB-INF/struts-config.xml
        </param-value>
    </context-param>   

    
    <!-- Standard Action Servlet Configuration (with debugging) -->
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>2</param-value>
        </init-param>
        <init-param>
            <param-name>detail</param-name>
            <param-value>2</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>


    <!-- Standard Action Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    

    <!-- The Usual Welcome File List -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>


    <!-- Struts Tag Library Descriptors -->
    <taglib>
        <taglib-uri>/tags/struts-bean</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-html</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-logic</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-nested</taglib-uri>
        <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-tiles</taglib-uri>
        <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
    </taglib>

</web-app>

ai ele tambem da um erro na minha classe em que esta a conexao com o banco de dados na linha da URL:

LINHA DO ERRO

dataSource = (DataSource) ic.lookup("java:comp/env/jdbc/StrutsDemoDS");

esta linha acima é a linha da minha classe, mas nao sei se esta certo.

D

segue abaixo…

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
   
    <display-name>Projeto Tutorial Struts</display-name>
    <!-- Context Configuration locations for Spring XML files -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/web.xml
            /WEB-INF/validation.xml
            /WEB-INF/struts-config.xml
        </param-value>
    </context-param>   

   
    <!-- Standard Action Servlet Configuration (with debugging) -->
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>2</param-value>
        </init-param>
        <init-param>
            <param-name>detail</param-name>
            <param-value>2</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>


    <!-- Standard Action Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

<!---------------------AQUI-------------------------->
  <resource-ref>
    <res-ref-name>jdbc/seurecursoPooling</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
  </resource-ref> 
<!--------------------------------------------------------->
   

    <!-- The Usual Welcome File List -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>


    <!-- Struts Tag Library Descriptors -->
    <taglib>
        <taglib-uri>/tags/struts-bean</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-html</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-logic</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-nested</taglib-uri>
        <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
    </taglib>

    <taglib>
        <taglib-uri>/tags/struts-tiles</taglib-uri>
        <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
    </taglib>

</web-app>
S

Olá Srta, ele esta dizendo que tenho que declarar isso, mas onde faco isso. É realmente necessario? Ele me retorna um erro dizendo assim:

ERRO GERADO:

XML validation started.

Checking file:/D:/pacote/java/Struts/strutsdemo/web/WEB-INF/web.xml...
Element type "res-sharing-scope" must be declared. [51] 
The content of element type "resource-ref" must match "(description?,res-ref-name,res-type,res-auth)". [52] 
The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,
servlet*,servlet-mapping*,session-config?,mime-mapping*,
welcome-file-list?,error-page*,taglib*,resource-ref*,security-constraint*,
login-config?,security-role*,env-entry*,ejb-ref*)". [87] 
XML validation finished.

portanto to mais perdido do que golero cego em copa do mundo heuahueha, é bem complicado mexer com pool, to sentindo no coro
ainda mais que sou novatao em java ai ja viu ne, mas pra tudo tem uma resoluzao ne heuahe, brigadao Srta.

E um material que eu tenho esta assim:

Temos no arquivo web.xml, três importantes seções:
A definição da Servlet que representa o Controller (ActionServlet)
O URL mapping da servlet, para informar como chamar esta servlet
As definições da biblioteca de tags da Struts

que termos q configurar isso mas como é feito o processo, procurei por toda parte na net e os materiais sobre isso deixam um certo interrregacao no ar de como realmente utilizar esta tecnica de pool, eles dizem que pra que reinventar a roda, mas se uma roda for tao complexa como este POOL entao depois que eu criar uma vez ai so é criar uma biblioteca.
Grato Srta Diana.

D

ow fera…é menos complicado do que se imagina… :wink:

o problema é q qdo vc está iniciando e começa a pesquisar materiais e implementacoes…acha muita coisa…mas na maioria das vezes os materiais se contradizem…

Entao vamos lá…
Pool no Tomcat:
1 - Criar um DataSource através da interface de admin do tomcar…lá onde aparecem todos os contextos!
2 - Implementar um ServiceLocator ou coisa do gênero para localizar o seu pool
3 - Informar ao web-xml q. vc está usando o recurso X (que é o pool)
e…
só…

referências:
http://tomcat.apache.org/tomcat-4.1-doc/jndi-datasource-examples-howto.html
http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html

t+

S

Olá Srta Diana, bom dia, gostaria de falar a voce que fiz o que me mandou fazer, seguindo aqueles passos, ate mudei meu tipo de conexao Data Source coloquei um tipo mais moderno em que faz a chamada de duas classes, mas o problema ainda persiste, se quiser que eu lhe mande o projeto eu lhe envio para que de uma verificada, ele foi desenvolvido com o netbeans 5.0, segue Srta. nao o problema desta conexao é que ela é um mito, ninguem a viu rodando.

Grato, se quiser ver o projeto eu lhe envio, ele ficou com 1.3megas so me passa o mail ai lhe passo o profeto. Grato pela forca.

Passe seu mail que lhe envio para dar uma olhada para mim se tiver como.

S

Olá bom dia Srta Diana, ja foi encaminhado o projeto, obrigado, estarei no aguardo, e o codigo (script gerador) da base de dados vai estar dentro do projeto.

Grato.

S

Olá Srta Diana e Pessoal, estava com varios problemas neste projeto ai postei o codigo para que vefificassem os erros, mas sei que a correria é muita, ai resolvi quebrar a cabeca com este projeto, ai consegui resolver varios bugs deste tutorial de Struts Framework utilizando conxao Data Source Pool em que gerencia os acessos sem alterar velocidade e tals, portanto agora ele esta conforme eu queria, quanto ao Data Source, tive que mudar o jeito em que chamava a URL, tive que criar uma String ja com o nome do Driver mysql, ai sim ele fungou, dentre outros bugs, agora eu so estou com um problema, so um mesmo, e que acho que voces vao conseguir solucionar perto dos que eu solucionei jheuaheu, vejam abaixo:

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

java.lang.ClassCastException: strutsdemo.bean.UserData
	org.apache.struts.util.RequestUtils.lookupActionForm(RequestUtils.java:213)
	org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:179)
	org.apache.struts.action.RequestProcessor.processActionForm(RequestProcessor.java:319)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:202)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.5.9

ele faz a chamada deste botao OK depois que eu digitei os dados e tals, ai este botao chama a funcao GravarBancoDeDados e que esta dando este erro na hora de jogar os dados de uma lista para a lista principal da classe assim:

UserData user = new UserData();
                user.setIdUsuario(rs.getInt("id_usuario"));
                user.setNome(rs.getString("nome"));
                user.setLogin(rs.getString("login"));
                user.setSenha(rs.getString("senha"));
                user.setSexo(rs.getString("sexo"));
                user.setAtivo(rs.getBoolean("ativo"));
                user.setFaixaIdade(rs.getInt("faixa_idade"));
                users.add(user);

minha classe e o objeto que mostra no erro é este ----> UserData - sei que é uma lista mas ainda nao sou capaz de resolver, grato, aguardo retorno de vcs amigos.

Kleber Gracia.

Criado 23 de novembro de 2006
Ultima resposta 29 de nov. de 2006
Respostas 15
Participantes 3