\subsection{Desplegando el código en tomcat}

\begin{itemize}
	\item Hasta ahora hemos trabajado con los scripts que GWT genera automáticamente
	\begin{itemize}
		\item Es interesante en tiempo de desarrollo
		\item Debugging, velocidad de desarrollo\ldots
	\end{itemize}
	\item Cuando hemos terminado la aplicación, tendremos que desplegarla en un servidor real
	\begin{itemize}
		\item Si no hacemos uso de RPC $\rightarrow$ carpeta \texttt{www} es suficiente
		\item Si hacemos uso de RPC, necesitaremos un contenedor de servlets
		\begin{itemize}
			\item Aquí vamos a hacerlo con \href{http://tomcat.apache.org/}{Apache Tomcat} 5.5 bajo \href{http://www.ubuntu.com/}{Ubuntu GNU/Linux} 7.04
		\end{itemize}
	\end{itemize}
\end{itemize}

\begin{itemize}
	\item Desplegando nuestro \texttt{EjemploRPC}
	\begin{itemize}
		\item Generamos los ficheros de ant
		\begin{itemize}
			\item \texttt{../projectCreator -ant EjemploRPC}
			\item Generará un fichero \texttt{EjemploRPC.ant.xml}
		\end{itemize}
		\item Compilamos el código del servidor 
		\begin{itemize}
			\item Eclipse lo hará automáticamente en la carpeta \texttt{bin}
			\begin{itemize}
				\item Previamente habremos utilizado ya eclipse con \texttt{projectCreator -eclipse EjemploRPC}
			\end{itemize}
			\item En la carpeta \texttt{bin} estarán todos los \texttt{.class}
		\end{itemize}
		\item Compilamos el código del cliente
		\begin{itemize}
			\item \texttt{./EjemploRPC-compile}
			\item Generará todos los HTML etc. en \texttt{www}
		\end{itemize}
		\item Creamos la carpeta \texttt{WEB-INF}
		\begin{itemize}
			\item \texttt{mkdir www/es.deusto.eghost.gwt.rpc.EjemploRPC/WEB-INF/}
			\item (desde este momento cuando hablamos de WEB-INF, hablamos de esta carpeta)
		\end{itemize}
		\item Generamos el \texttt{.jar}
		\begin{itemize}
			\item \texttt{ant -f EjemploRPC.ant.xml package}
			\item Tendremos un \texttt{.jar} llamado \texttt{EjemploRPC.jar}
		\end{itemize}
		\item Rellenamos \texttt{WEB-INF}
		\begin{itemize}
			\item Movemos \texttt{EjemploRPC.jar} a \texttt{WEB-INF/lib/}
			\item Copiamos \texttt{gwt-servlet.jar} a \texttt{WEB-INF/lib/}
		\end{itemize}
		\item Creamos el \texttt{web.xml}
		\begin{itemize}
			\item Editamos el fichero \texttt{WEB-INF/web.xml} con este contenido:
			\begin{lstlisting}[language=XML]
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <display-name>Ejemplo RPC</display-name>

  <servlet>
    <servlet-name>calculadora</servlet-name>
    <servlet-class>
	es.deusto.eghost.gwt.rpc.server.ServicioCalculadoraImpl
	</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>calculadora</servlet-name>
    <url-pattern>/calculadora</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>EjemploRPC.html</welcome-file>
  </welcome-file-list>
</web-app>
			\end{lstlisting}
		\end{itemize}
		\item Movemos la carpeta del servlet a la carpeta de aplicaciones de \texttt{tomcat}
		\begin{itemize}
			\item \texttt{sudo mv www/es.deusto.eghost.gwt.rpc.EjemploRPC\\ /var/lib/tomcat5.5/webapps/EjemploRPC}
			\item \texttt{sudo chown -R tomcat55.root /var/lib/tomcat5.5/webapps/EjemploRPC}
		\end{itemize}
		\item Le damos permisos
		\begin{itemize}
			\item Añadimos a \texttt{/etc/tomcat5.5/policy.d/50user.policy} algo tal que:
\begin{lstlisting}[language=Java]
grant codeBase "file:${catalina.base}/webapps/EjemploRPC/-" {
        permission java.security.AllPermission;
};
\end{lstlisting}
		\end{itemize}
		\item Reiniciamos tomcat\ldots
		\begin{itemize}
			\item \texttt{sudo /etc/init.d/tomcat5.5 restart}
		\end{itemize}
		\item \ldots y a disfrutar!
	\end{itemize}
\end{itemize}
