Git Product home page Git Product logo

sorayasl / thymeleafexamples-petclinic Goto Github PK

View Code? Open in Web Editor NEW

This project forked from thymeleaf/thymeleafexamples-petclinic

0.0 1.0 0.0 849 KB

Spring PetClinic with Thymeleaf and HTML5 - Companion application for the "Bringing HTML5 to the Spring PetClinic with Thymeleaf" article at the Thymeleaf website: http://www.thymeleaf.org/petclinic.html

Home Page: http://www.thymeleaf.org

License: Apache License 2.0

thymeleafexamples-petclinic's Introduction

==========================================================================
=== Spring PetClinic Sample Application with Thymeleaf view layer
==========================================================================


 To learn more and download latest version:
 
     http://www.thymeleaf.org


@author Ken Krebs
@author Juergen Hoeller
@author Rob Harrop
@author Costin Leau
@author Sam Brannen
@author Scott Andrews

@author Soraya Sanchez (Thymeleaf view layer)

==========================================================================
=== Data Access Strategies
==========================================================================

PetClinic features alternative DAO implementations and application
configurations for JDBC, Hibernate, and JPA, with HSQLDB and MySQL as
target databases. The default PetClinic configuration is JDBC on HSQLDB.
See "src/main/resources/jdbc.properties" as well as web.xml and
applicationContext-*.xml in the "src/main/webapp/WEB-INF" folder for
details. A simple comment change in web.xml switches between the data
access strategies.

The JDBC and Hibernate versions of PetClinic also demonstrate JMX support
via the use of <context:mbean-export/> for exporting MBeans.
SimpleJdbcClinic exposes the SimpleJdbcClinicMBean management interface
via JMX through the use of the @ManagedResource and @ManagedOperation
annotations; whereas, the HibernateStatistics service is exposed via JMX
through auto-detection of the service MBean. You can start up the JDK's
JConsole to manage the exported bean.

All data access strategies can work with JTA for transaction management by
activating the JtaTransactionManager and a JndiObjectFactoryBean that
refers to a transactional container DataSource. The default for JDBC is
DataSourceTransactionManager; for Hibernate, HibernateTransactionManager;
for JPA, JpaTransactionManager. Those local strategies allow for working
with any locally defined DataSource.

Note that the sample configurations for JDBC, Hibernate, and JPA configure
a BasicDataSource from the Apache Commons DBCP project for connection
pooling.

==========================================================================
=== Build and Deployment
==========================================================================

The Spring PetClinic sample application is built using Maven.
When the project is first built, Maven will automatically download all required
dependencies (if these haven't been downloaded before). Thus the initial build
may take a few minutes depending on the speed of your Internet connection,
but subsequent builds will be much faster.

Available build commands:

- mvn clean         --> cleans the project
- mvn clean test    --> cleans the project and runs all tests
- mvn clean package --> cleans the project and builds the WAR

After building the project with "mvn clean package", you will find the
resulting WAR file in the "target/" directory. By default, an
embedded HSQLDB instance in configured. No other steps are necessary to
get the data source up and running: you can simply deploy the built WAR
file directly to your Servlet container.

For MySQL, you'll need to use the corresponding schema and SQL scripts in
the "db/mysql" subdirectory. Follow the steps outlined in
"db/mysql/petclinic_db_setup_mysql.txt" for explicit details.

In you intend to use a local DataSource, the JDBC settings can be adapted
in "src/main/resources/jdbc.properties". To use a JTA DataSource, you need
to set up corresponding DataSources in your Java EE container.

Notes on enabling Log4J:
 - Log4J is disabled by default due to issues with JBoss.
 - Uncomment the Log4J listener in "WEB-INF/web.xml" to enable logging.
 
Notes on service static resources:
 - Most web containers provide a 'default' servlet for serving static 
 resources; Petclinic relies on it for its images.
 - On containers without such a mapping (ex: GlassFish), uncomment the 
 'default' declaration in "WEB-INF/web.xml".

==========================================================================
=== JPA on Tomcat
==========================================================================

This section provides tips on using the Java Persistence API (JPA) on
Apache Tomcat 4.x or higher with a persistence provider that requires
class instrumentation (such as TopLink Essentials).

To use JPA class instrumentation, Tomcat has to be instructed to use a
custom class loader which supports instrumentation. See the JPA section of
the Spring reference manual for complete details.

The basic steps are:
 - Copy "org.springframework.instrument.tomcat-3.0.0.RELEASE.jar" from the
   Spring distribution to "TOMCAT_HOME/server/lib".
 - If you're running on Tomcat 5.x, modify "TOMCAT_HOME/conf/server.xml"
   and add a new "<Context>" element for 'petclinic' (see below). You can 
   alternatively deploy the WAR including "META-INF/context.xml" from this 
   sample application's "src/main/webapp" directory, in which case you
   will need to uncomment the Loader element in that file to enable the
   use of the TomcatInstrumentableClassLoader.

<Context path="/petclinic" docBase="/petclinic/location" ...>
  <!-- please note that useSystemClassLoaderAsParent is available since Tomcat 5.5.20; remove it if previous versions are being used -->
  <Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" useSystemClassLoaderAsParent="false"/>
  ...
</Context>

thymeleafexamples-petclinic's People

Contributors

danielfernandez avatar sorayasl avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.