Desenvolvimento JSP com Domino

Autor: Maurício Luiz Viani

 

1. Apresentação

Este documento tem por objetivo apresentar o ambiente de desenvolvimento JSP com Domino, mostrando o que é necessário configurar para começar a desenvolver sites Internet em JSP com acesso a bases de dados Notes.

2. Ambiente de desenvolvimento

Na Celepar já temos os ambientes de desenvolvimento e produção JSP montados. Não será necessário começar do zero. Também não é recomendável criar servidores JSP espalhados pela rede. A recomendação é utilizar os ambientes de desenvolvimento e produção mantidos pela Celepar.

2.1. Mapa das conexões

2.2. Criando uma nova aplicação JSP

A atribuição de criar novas aplicações no servidor de desenvolvimento JSP compete à GTI (Gerência de Tecnologia da Informação). Depois que a aplicação tiver sido criada, tem-se uma estrutura de diretório semelhante a esta:

Os arquivos domtags.jar, ncso.jar, domtags.tld, domutil.tld podem ser obtidos no diretório raiz de um servidor Domino versão 6.x.

2.3. Exemplo de arquivo web.xml:

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

<!DOCTYPE web-app
PUBLIC “-//Sun Microsystems, Inc.//DTD Web
Application 2.3//EN”
“http://java.sun.com/dtd/web-app_2_3.dtd”>

<web-app>
<display-name>Bem-vindo</display-name>
<description>
Bem-vindo
</description>
<context-param>
<param-name>lotus.domino.default.host</
param-name>
<param-value>10.15.69.56</param-value>
</context-param>
</web-app>

Nota: deve-se substituir o valor do parâmetro “lotus.domino.default.host” pelo nome DNS ou endereço IP do servidor Domino onde as bases Notes estão armazenadas.

2.4. Conteúdo do arquivo domino.jsp.

<%@taglib uri=”/WEB-INF/tlds/domtags.tld”
prefix=”domino”%>
<%@taglib uri=”/WEB-INF/tlds/domutil.tld”
prefix=”domutil”%>
<% String usuario =(String)
session.getAttribute(“usuNome”); %>
<% String senha = (String)
session.getAttribute(“usuSenha”); %>
<% if (usuario != null) { %>
<domino:default user=”<%=usuario%>”
password=”<%=senha%>”/>
<% } %>

Nota: o usuário e senha para conexão com o Domino foram previamente gravados no objeto session por alguma página de autenticação.

2.5. Configurando o servidor Domino

O esquema do item 2.1, mostra que a conexão com o servidor Domino é feita através de Corba/iiop, sendo necessário configurá-lo como segue:

1) Edite o arquivo Notes.ini, do servidor, e na chave “ServerTasks” acrescente a tarefa “diiop”;

2) Edite o documento de configuração do servidor e na aba “Portas” “Portas da Internet” “IIOP”, coloque o status da porta TCP/IP em “Ativado”;

3) No mesmo documento, nas “opções de autenticação”, marque “Sim” para as categorias “nome e senha” e “anônimo”;

4) Selecione a aba “Segurança” e na seção “Restrições Java/Com” preencha com “*”;

5) Dê um reboot no servidor. Observe se a tarefa Diiop carrega corretamente.

3. Exibindo o Conteúdo de uma Visão

Esta página JSP percorre uma visão do primeiro documento ao último, mostrando o conteúdo das colunas da visão. Os trechos de código em destaque demonstram o uso da biblioteca de tags:

<%@ page contentType=”text/html; charset=iso-8859-1" language=”java” errorPage=”../errorPage.jsp” %>
<%@ include file=”../verificaLogin.jsp”%>
<%@ include file=”../conn/domino.jsp”%>
<HTML>
<HEAD>
<META NAME=”robots” CONTENT=”noindex”>
<title>.:CELEPAR - Intranet:.</title>
<META HTTP-EQUIV=”Expires” CONTENT=”0">
<META HTTP-EQUIV=”Pragma” CONTENT=”no-cache”>
<META HTTP-EQUIV=”Cache-Control” CONTENT=”no-cache”>
<link rel=”stylesheet” href=”../style/estiloempr.css” type=”text/css”>
</HEAD>
<body bgcolor=”#135290" leftmargin=”0" topmargin=”0" marginwidth=”0" marginheight=”0" text=”#FFFFFF”>
<table border=”0" cellpadding=”0" cellspacing=”1" class=”texto”>
<tr>
<td>
<table border=”0" align=”left”>
<tr>
<td class=”cabcoluna”>Ano</td>
<td class=”cabcoluna”>Mês</td>
<td class=”cabcoluna”>Número</td>
<td class=”cabcoluna”>Titulo</td>
</tr>
<domino:view id=”informe” viewname=”Informe” dbname=”aplic/informe.nsf”>
<domino:page id=”pagina” rows=”15">
<domino:viewloop id=”ViewLoop”>
<tr valign=”top” class=”textocaps”>
<td col=”1" format=”RAW”/></td>
<td col=”2" format=”RAW”/></td>
<td col=”3" format=”RAW”/></td>
<td /> <domino:formlink href=”informe.jsp”>
<domino:viewitem col=”4"/>
</domino:formlink>
</td>
</tr>
</domino:viewloop>
<domino:novalues>
<tr>
<td>
<br><span class=”textobold”>Nenhuma ocorrência.</span>
</td>
</tr>
</domino:novalues>
<tr>
<td colspan=”4"><br>
<center>
<domino:pagefirst text=”Página Inicial”/> <% out.print(“ | “); %>
<domino:pageprev text=”Anterior”/> <% if (pagina.getPage() > 1) { out.print(“ | “); } %>
Página <%=pagina.getPage()%> de <%=pagina.getPageCount()%>
<% if (pagina.getPage() < pagina.getPageCount()) { out.print(“ | “); %>
<domino:pagenext text=”Próxima”/> <% } %>
<% out.print(“ | “); %> <domino:pagelast text=”Última Página”/>
</center>
</td>
</tr>
</domino:page>
</domino:view>
</table>
</td>
</tr>
</table>
</body>
</html>

4. Exibindo um documento.

<%@ page contentType=”text/html; charset=iso-8859-1" language=”java” import=”lotus.domino.*,java.util.*”%>
<%@ include file=”../verificaLogin.jsp”%>
<%@ include file=”../conn/domino.jsp”%>
<HTML>
<HEAD>
<META NAME=”robots” CONTENT=”noindex”>
<TITLE>CELEPAR - Empregado</TITLE>
<META HTTP-EQUIV=”Expires” CONTENT=”0">
<META HTTP-EQUIV=”Pragma” CONTENT=”no-cache”>
<META HTTP-EQUIV=”Cache-Control” CONTENT=”no-cache”>
<link rel=”stylesheet” href=”../style/estiloempr.css” type=”text/css”>
</HEAD>
<body bgcolor=”#135290" leftmargin=”0" topmargin=”0" marginwidth=”0" marginheight=”0" text=”#FFFFFF”>
<table border=”0" cellpadding=”0" cellspacing=”1" class=”texto”>
<tr>
<td>
<domino:document id=”doc”>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 class=”textocaps”>
<TR VALIGN=top>
<TD>
<span class=”campotitulo”>Área: </span>&nbsp;
<% out.println(doc.getFirstItem(“Área”).getText()); %>
</TD>
</TR>
<TR VALIGN=top>
<TD>
<span class=”campotitulo”>Número:</span>&nbsp;
<% out.println(doc.getFirstItem(“numero”).getText()); %>
</TD>
</TR>
<TR VALIGN=top>
<TD>
<span class=”campotitulo”>Data de composição:</span>&nbsp;
<% out.println(doc.getFirstItem(“datacomposicao”).getText()); %>
</TD>
</TR>
<TR VALIGN=top>
<TD>
<span class=”campotitulo”>Titulo:</span>&nbsp;
<% out.println(doc.getFirstItem(“subject”).getText()); %>
</TD>
</TR>
<tr><td><hr></td></tr>
<TR VALIGN=top>
<TD>
<jsp:useBean id=”rt” scope=”page” class=”richtext.rt” />
<jsp:setProperty name=”rt” property=”servidor” value=”10.15.69.56" />
<jsp:setProperty name=”rt” property=”base” value=”aplic/informe.nsf” />
<jsp:setProperty name=”rt” property=”visao” value=”informe” />
<jsp:setProperty name=”rt” property=”unid” value=”<%=doc.getUniversalID()%>” />
<jsp:setProperty name=”rt” property=”div” value=”rt” />
<jsp:setProperty name=”rt” property=”imagem” value=”../images/marcador.gif” />
<jsp:setProperty name=”rt” property=”usuario”
value=”<%=session.getAttribute(“usuNome”)%>” />
<jsp:setProperty name=”rt” property=”senha”
value=”<%=session.getAttribute(“usuSenha”)%>” />
<% out.println(rt.getConteudo()); %>
</TD>
</TR>
</TABLE>
</domino:document>
</td>
</tr>
</table>
</body>
</html>

5. Exibindo campos texto rico.

Foi desenvolvido um javabean para obter o conteúdo de campos texto rico em documentos do Notes, cujas propriedades são as seguintes:

Os parâmetros “visão”, “imagem”, “usuário” e “senha” são opcionais.

Exemplo de chamada ao javabean:

<jsp:useBean id=”rt” scope=”page” class=”richtext.rt” />
<jsp:setProperty name=”rt” property=”servidor” value=”10.15.69.56" />
<jsp:setProperty name=”rt” property=”base” value=”aplic/informe.nsf” />
<jsp:setProperty name=”rt” property=”visao” value=”informe” />
<jsp:setProperty name=”rt” property=”unid” value=”<%=doc.getUniversalID()%>” />
<jsp:setProperty name=”rt” property=”div” value=”rt” />
<jsp:setProperty name=”rt” property=”imagem” value=”../images/marcador.gif” />
<jsp:setProperty name=”rt” property=”usuario” value=”<%=session.getAttribute(“usuNome”)%>” />
<jsp:setProperty name=”rt” property=”senha” value=”<%=session.getAttribute(“usuSenha”)%>” />
<% out.println(rt.getConteudo()); %>

6. Onde obter ajuda

Maiores informações podem ser obtidas nas fontes:

1. CELEPAR. Suporte Notes & Domino. Disponível em: <http://10.15.61.12/portal/portalnotes.nsf/inicio>. Acesso em: 13 jan.2004.

2. CELEPAR. Suporte Notes & Domino. Api Java 1.4.2. Disponível em: <http://10.15.61.12/portal/java1_4_2/index.html>. Acesso em: 13 jan. 2004.

3. CELEPAR. Suporte Notes & Domino. Integrando Domino com Apache TomCat 4. Disponível em: <http://10.15.61.12/portal/portalnotes.nsf/docs/A8FF812BDE5B1EEA032
56D8E004BDBB7
>. Acesso em: 21 jan. 2004.

4. CELEPAR. Suporte Notes & Domino. Domino designer 6 help. Disponível em: <http://www.12.lotus.com/ldd/doc/domino_notes/Rnext/help6_designer.nsf/
/Main?OpenFrameSet
>. Acesso em: 13. jan. 04.

5. PATT-CORNER, R. A step-by-step guide to building 3 different Domino/JSP development environments - Tomcat, WebSphere, and Forte for Java. The View, Rockville, v. 8, n. 4, p. 25-48, July/Aug. 2002.

6. PATT-CORNER, R. Integrating Domino with JavaSever pages - the what, why, and how. The View, Rockville, v. 8, n. 4, p. 25-48, July/Aug. 2002.

7. PATT-CORNER, R. Programming flexible, non-standard views with Domino JSP custom tags. The View, Rockville, v. 8, n. 6, p. 69-102, Nov./Dec. 2002.

8. PATT-CORNER, R. Pusshing the envelope - creating JSP pages with multiple views from multiple databases. The View. Rockville, v. 9, n. 4, p. 55-76, July/Aug. 2003.