| 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 width=”531" border=”0" cellpadding=”0"
cellspacing=”1" class=”texto”>
<tr>
<td>
<table width=”100%” border=”0" align=”left”>
<tr>
<td width=”40" class=”cabcoluna”>Ano</td>
<td width=”40" class=”cabcoluna”>Mês</td>
<td width=”40" class=”cabcoluna”>Número</td>
<td width=”300" 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 width=”40"><domino:viewitem col=”1"
format=”RAW”/></td>
<td width=”40"><domino:viewitem col=”2"
format=”RAW”/></td>
<td width=”40"><domino:viewitem col=”3"
format=”RAW”/></td>
<td width=”300">
<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 width=”531" 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>
<% out.println(doc.getFirstItem(“Área”).getText());
%>
</TD>
</TR>
<TR VALIGN=top>
<TD>
<span class=”campotitulo”>Número:</span>
<% out.println(doc.getFirstItem(“numero”).getText()); %>
</TD>
</TR>
<TR VALIGN=top>
<TD>
<span class=”campotitulo”>Data de composição:</span>
<% out.println(doc.getFirstItem(“datacomposicao”).getText());
%>
</TD>
</TR>
<TR VALIGN=top>
<TD>
<span class=”campotitulo”>Titulo:</span>
<% 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.
viani@celepar.gov.br

|