// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Catálogo Pet dos Web services RESTful - NetBeans IDE 6.5
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Catálogo Pet dos Web services RESTful - NetBeans IDE 6.5 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Catálogo Pet dos Web services RESTful - NetBeans IDE 6.5

|===
|Neste screencast, Carol Mcdonald mostra como construir um Catálogo Pet usando Web Services RESTful, JAX-RS, dojo, MySQL e NetBeans IDE 6.5.

Este tutorial faz parte do link:../intro-screencasts.html[+Tour em Vídeo Guiado do NetBeans IDE 6.5+].

Autor: Carol Mcdonald
Tempo: 8:46 
link:http://bits.netbeans.org/media/restproject.swf[+Download+] [20 MB]


== Links relacionados

* link:http://weblogs.java.net/blog/caroljmcdonald/[+fazer download de projetos de amostra do blog da Carol+]
* link:./rest.html[+Introdução ao RESTful Web Services+]
link:/about/contact_form.html?to=3&subject=Feedback: NB6 web services pet catalog screencast[+Envie-nos Seu Feedback+]
 
|===
