tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Tapestry Wiki] Update of "HowToSetupEclipseCallistoJetty" by MichaelLake
Date Fri, 14 Jul 2006 05:53:49 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Tapestry Wiki" for change notification.

The following page has been changed by MichaelLake:

The comment on the change is:
finished for today

  ## page was renamed from MichaelLake
  = How to set up Eclipse/Callisto/Jetty for Developing Tapestry =
+ Download and extract all of the following to a directory (I use {{{C:\java\}}})
+  *{{{hivemind.1.1.1}}}
+  *{{{tapestry-4.0.3}}}
+  *{{{jetty-5.1.10}}}
  Download the latest Eclipse http://www.eclipse.org (I'm using 3.2)
@@ -36, +42 @@

  ''Note: Later when you want to deploy your app from the repository, you'll do first do an
svn checkout(one time only) such as [[BR]] {{{svn co file:///usr/local/repository/myapp/trunk/context/
/home/myapp/www/}}} and every time you want to update your live version(after commiting changes
from eclipse) simply do an {{{svn update /home/myapp/www/}}} and then restart your jetty server.
This is a great way to save yourself because you can very easily roll back to an earlier revision
on the server if there was a problem.
+ ''Note: Edit the XML filetypes so that *.page, *.application, and *.jwc files open up in
the XML editor
  == From the New project wizard... ==
   *Create a "Dynamic Web Project", Next
   *Name it "myapp", Next
@@ -44, +52 @@

   *(ignore its warning about project files)
   *You should be in the java perspective now, Right-click your new project in the Project
Explorer, Click Build Path -> Configure Build Path...
   *Click the Source tab and change Default output folder to say {{{myapp/context/WEB-INF/classes}}}
-  *Delete that pesky {{{build}}} folder it had created
+  *Click the Libraries tab, then "Add Library...", select "User Library", then click the
"User Libraries..." button then click "New..."
+  *Enter {{{JETTY5_LIB}}} as the name, OK
+  *Now click "Add JARs..." for the following
+   {{{
+ jetty-5.1.10/*.jar
+ jetty-5.1.10/lib/*.jar
+ jetty-5.1.10/extra/lib/*.jar
+ jetty-5.1.10/extra/ext/*.jar
+ }}}
+  *Click through all the "OK" buttons to get out of there
+  *When back at the java perspective delete that pesky {{{build}}} folder it had created
+  *Now we need to add Tapestry, Hivemind and supporting libraries so go to your filesystem
and copy your downloaded jars and paste them to the {{{context/WEB-INF/lib}}} dir in eclipse.
add the following:
+ {{{
+ C:\java\hivemind-1.1.1\*.jar
+ C:\java\tapestry-4.0.1\*.jar
+ C:\java\tapestry-4.0.1\ext-package\lib\*.jar
+ }}}
+  *Now edit your {{{context/WEB-INF/web.xml}}} file to look like the following:
+ {{{
+ <?xml version="1.0" encoding="UTF-8"?>
+ <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+ 	<display-name>
+ 	udosquares</display-name>
+ 	<servlet>
+ 		<servlet-name>Udosquares</servlet-name>
+ 		<servlet-class>
+ 			org.apache.tapestry.ApplicationServlet
+ 		</servlet-class>
+ 		<load-on-startup>1</load-on-startup>
+ 	</servlet>
+ 	<servlet-mapping>
+ 		<servlet-name>Udosquares</servlet-name>
+ 		<url-pattern>/app</url-pattern>
+ 	</servlet-mapping>
+ </web-app>
+ }}}
+  * And create a new file named {{{context/WEB-INF/Udosquares.application}}} and paste the
+ {{{
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE application PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN"

+ 	"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
+ <application>
+     <description>Udosquares Application File</description>
+ 	<meta key="org.apache.tapestry.messages-encoding" value="UTF-8"/>
+ 	<meta key="org.apache.tapestry.accepted-locales" value="en"/>
+ 	<meta key="org.apache.tapestry.page-class-packages" value="com.udosquares.pages"/>
+ 	<meta key="org.apache.tapestry.component-class-packages" value="com.udosquares.components"/>
+ </application>
+ }}}
+  *Now create a a file called {{{context/Home.html}}} just put some starter text in there:
+ {{{
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title>I love Tapestry</title>
+ </head>
+ <body>
+ Tapestry is awesome
+ </body>
+ </html>
+ }}}
+ Now for a tricky part that kinda threw me for a loop the first time.
+  *First things first, let's make sure JettyLauncher buttons are showing. so go to Window
-> Customize Perspective..., click the Commands tab and check the "Jetty Launcher Actions"
option. Doing so should add another button on your toolbar which is used for restarting or
stopping the Jetty server.
+  *Now we need be able to start the Jetty server, so go to Run -> Run... and right-click
"Jetty Web" to create a new jetty launch configuration
+  *From the Main tab, select your Jetty home directory, specify {{{context}}} as the "webapp
root dir" and select the project it goes with
+  *'''IMPORTANT''': On the classpath tab, remove the "Udosquares (default classpath)" otherwise
you get a fatal error about how hivemind is duplicated.
+  *Browse to [http://localhost:8080/app] in FIREFOX now you should see "Tapestry is awesome"
+  *Tapestry creates pools for its page objects so changes made to Home.html won't be seen
until jetty is restarted. You can now edit the file and restart Jetty by clicking the JettyLauncher
button on the toolbar. Alternatively you could add an argument to the launch configuration
(Run -> Run...) to pass VM arguments which says {{{-Dorg.apache.tapestry.disable-caching=true}}}
this will allow the .html pages to be reloaded every time you access them, which can help
with development. Problem is, after awhile Tapestry fills up with too many page objects and
slows down. use this command only in development NEVER in production.
+  *Create a package called {{{com.udosquares.pages}}} and create a new class under it called
"Home". Paste the following
+ {{{
+ package com.udosquares.pages;
+ import org.apache.tapestry.annotations.InitialValue;
+ import org.apache.tapestry.html.BasePage;
+ public abstract class Home extends BasePage {
+ 	@InitialValue("literal:mike")
+ 	public abstract void setName(String name);
+ }
+ }}}
+  *Now modify the Home.html again and paste this new text to it:
+ {{{
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+ <html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title>I love Tapestry</title>
+ </head>
+ <body>
+ My name is <span jwcid="@Insert" value="ognl:name" />.
+ </body>
+ </html>
+ }}}
+  *Restart Jetty and browse again to [http://localhost:8080/app]
+  *You should see "My name is mike."
+  *Notice a couple things here - the Home class is abstract and tapestry recognizes abstract
setters (setName is our only one in this instance), when tapestry runs, it it will create
a page class which will also have a getter (automatically made based on the one setter provided).
You could also use just a getter and tapestry will create a setter automatically as well...sometimes
you want both because you're submitting a form or something...you'll learn.
+  *Notice also that using the @Insert component we're giving an ognl expression as a value.
Here, ognl is calling "getName" because we have given it "name" if we had specified value="ognl:person.name"
it would have called "getPerson().getName()" on our page object.
+ more later?? any pros are welcome to update this..after messing around a lot with other
app servers and different setups I found this to be the most productive for tapestry work.

To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org

View raw message