Frage

Ich bin mit Eclipse-Galileo und ich wollte eine einfache Anwendung implementieren, mit JPA, Glassfish 2.1 und MySQL 5. Leider konnte ich finden keine Tutorials für Glassfish 2.1 (nur 3.0, aber ich kann es nicht verwendet werden).

habe ich ein PPV-Projekt hinzugefügt aus der Datenbank ein Unternehmen eine MySQL5 Verbindung und erzeugt wird.

Die Erzeugung JPA-Klasse ist:

package model;

import java.io.Serializable;
import javax.persistence.*;

@Entity
@Table(name="customer")
public class Customer implements Serializable {
 private static final long serialVersionUID = 1L;

 @Id
 @Column(name="customer_id")
 private int customerId;

 private String email;

 @Column(name="first_name")
 private String firstName;

 @Column(name="last_name")
 private String lastName;

    public Customer() {
    }

 public int getCustomerId() {
  return this.customerId;
 }

 public void setCustomerId(int customerId) {
  this.customerId = customerId;
 }

 public String getEmail() {
  return this.email;
 }

 public void setEmail(String email) {
  this.email = email;
 }

 public String getFirstName() {
  return this.firstName;
 }

 public void setFirstName(String firstName) {
  this.firstName = firstName;
 }

 public String getLastName() {
  return this.lastName;
 }

 public void setLastName(String lastName) {
  this.lastName = lastName;
 }

}

Und die persistence.xml Datei ist:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
 <persistence-unit name="JPAProject2">
  <class>model.Customer</class>
 </persistence-unit>
</persistence>

habe ich ein dynamisches Web-Projekt, und fügte eine neue Servlet-Klasse, die wie folgt aussieht:

package servlet;    
import java.io.IOException;    
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.transaction.UserTransaction;    
import model.Customer;

public class JpaDemoServlet2 extends HttpServlet 
{
 private static final long serialVersionUID = 1L;

 @PersistenceUnit
 private EntityManagerFactory entityManagerFactory;
 @Resource
 private UserTransaction userTransaction;

    public JpaDemoServlet2() 
    {
        super();
    }

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
 {
  EntityManager entityManager =
   entityManagerFactory.createEntityManager();

  Customer customer = new Customer();
  customer.setCustomerId(3);
  customer.setFirstName("Smith");
  customer.setLastName("John");
  customer.setEmail("john.smith@email.com");

  try
  {
   userTransaction.begin();
   entityManager.persist(customer);  
   userTransaction.commit();
  }
  catch(Exception ex)
  {
   response.sendError(1, ex.getMessage());
  }

 }

}

Ich habe in den Eigenschaften Projektreferenzen und Modulabhängigkeiten des Servlets Projekt für die PPV-Projekt. Gibt es noch andere Konfigurationseinstellung, die getan werden muss? Bisher konnte ich die Servlets veröffentlichen, aber leider kann ich es nicht laufen. http: // localhost: 'Hallo, Welt' 4848 / ServletProject2 , erhalte ich die Nachricht, aber wenn ich will http: // localhost: 4848 / ServletProject2 / JpaDemoServlet2 ich dieses Ausnahme:

Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Connection could not be allocated because: java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused: connect.
Error Code: 0

Gibt es etwas, was ich bin fehlt?

War es hilfreich?

Lösung

Es gibt eine Reihe von Fragen, denke ich.

Zuerst sucht die persistence.xml ein wenig seltsam, würde ich so etwas wie dies zu erwarten:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="JPAProject2" transaction-type="JTA">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <jta-data-source>jdbc/sample</jta-data-source>
    <class>model.Customer</class>
</persistence-unit>
</persistence>

Das heißt, ein Anbieter Feld und die erforderlichen Felder, um anzuzeigen, dass Sie in einem Server (JTA-data-source) laufen lassen. Natürlich jta-Datenquelle muss eine Datenquelle verweisen, die Sie in Glassfish konfigurieren.

Als nächstes denke ich es ziemlich seltsam ist, dass Ihre Anwendung auf dem Ports 4848 läuft, in der Regel das ist der administrative Hörer für Glassfish, und ich würde erwarten, dass nur die Admin-Konsole dort laufen. Haben Sie konfigurieren Sie Ports des Glassfish?

Eine Sache, die mir ein Rätsel ist, wie Sie dies bekam weit mit einer solchen Konfiguration: es sieht aus wie Toplink denkt, es hat ein Derby läuft auf localhost kontaktieren (Port 1527 ist Standard für Derby) so vielleicht gibt es noch einige andere persistence.xml im Umlauf? Bitte überprüfen Sie, dass.

Über Tutorials: Ich Glassfish verwenden viel, aber immer mit NetBeans. Hier sind ein paar Links zu Tutorials von der Netbeans-Website, sie könnten Ihnen helfen.

Am einfachsten kann nur Netbeans installieren, die Tutorials folgen und einen Blick auf alle Dateien, die generierten erhalten, automatisiert Netbeans die Schaffung einer Menge von diesem Zeug und ich habe keine Ahnung, was Grad der Unterstützung von Eclipse Sie gibt mit diese Dateien.

Hier ist eine ziemlich komplette Tutorial auf Basis von Eclipse: http: //wiki.eclipse .org / Eclipse / Beispiele / PPV / GlassFishV2_Web_Tutorial

Ein letztes: ein Tutorial für GF3 sollten Sie auf GF2 auch, zumindest für diese Technologien (Servlet und JPA) erhalten werden. OK, kommt GF3 mit Eclipse statt Toplink Essentials aber diese beiden sind nicht so verschieden überhaupt.

Edit: als ich sah, TLE versuchen zu einem Derby auf localhost verbinden ich den Teil über MySQL vergessen. Dies wurde nun behoben -. Hinweise auf, wie Sie Derby entfernt wurden, beginnen sollte

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top