Во-первых, знайте, что я новичок в программировании и в настоящее время прохожу курс по EE через Udemy, поэтому, пожалуйста, помогите, но в простых терминах. В примерах проектов, которые я создал в рамках этого курса, я использовал Glassfi sh для развертывания сервлетов без проблем.
Сообщение об истечении срока действия сертификата SSL, которое я получил на своей консоли, только что началось при попытке развернуть новый проект с использованием JPA в первый раз. В этом проекте я использую eclipseLink и Derby. Я точно следовал инструкциям, за исключением следующего:
При указании драйвера и сведений о соединении с помощью инструмента Data Source Explorer в Eclipse после создания источника данных в консоли управления Glassfi sh я не делал В выпадающем списке нет драйверов, поэтому я выбрал «Derby Embedded JDB C Driver» в списке шаблонов, очистил все файлы JAR, а затем добавил URL-адрес для файла JAR, включенного в мой Glassfi sh 4.1. .1 / Папка компьютера DerbyDB, хотя я использую Glassfi sh 5.0.
Я могу установить sh соединение, поэтому не думаю, что это вызывает какие-либо проблемы, но я должен был добавить этот комментарий на всякий случай, чтобы вы знали, что это единственное, что я сделал в отличие от инструкций. Это комментарий на странице ответов (который должен быть пустым, потому что я ничего не добавил):
Подано в: / jpa3
(jpa3 это название моего проекта).
Ниже приводится точное консольное сообщение, которое я получаю, когда открываю свой сервлет в своем браузере: (Обратите внимание на жирный шрифт * и, пожалуйста, простите мое длинное консольное сообщение, но я не заработал достаточно кредитов, чтобы опубликовать изображение ). Заранее спасибо!
2020-04-01T10:37:37.855-0400|Info: Running GlassFish Version: GlassFish Server Open Source Edition 5.0 (build 25)
2020-04-01T10:37:37.863-0400|Info: Server log file is using Formatter class: com.sun.enterprise.server.logging.ODLLogFormatter
2020-04-01T10:37:37.989-0400|Info: Realm [admin-realm] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created.
2020-04-01T10:37:38.005-0400|Info: Realm [file] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created.
2020-04-01T10:37:38.005-0400|Info: Realm [certificate] of classtype [com.sun.enterprise.security.auth.realm.certificate.CertificateRealm] successfully created.
2020-04-01T10:37:38.205-0400|Info: Authorization Service has successfully initialized.
2020-04-01T10:37:38.494-0400|Info: Registered org.glassfish.ha.store.adapter.cache.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry
2020-04-01T10:37:38.575-0400|Info: JTS5014: Recoverable JTS instance, serverId = [100]
2020-04-01T10:37:38.691-0400|Info: Grizzly Framework 2.4.1 started in: 85ms - bound to [/0.0.0.0:8080]
2020-04-01T10:37:38.854-0400|Info: Grizzly Framework 2.4.1 started in: 0ms - bound to [/0.0.0.0:8181]
2020-04-01T10:37:38.854-0400|Info: Grizzly Framework 2.4.1 started in: 0ms - bound to [/0.0.0.0:4848]
2020-04-01T10:37:38.923-0400|Info: Grizzly Framework 2.4.1 started in: 0ms - bound to [/0.0.0.0:3700]
2020-04-01T10:37:39.108-0400|Info: visiting unvisited references
**2020-04-01T10:37:40.479-0400|Severe: The SSL certificate has expired:** [
[
Version: V3
Subject: CN=UTN-USERFirst-Client Authentication and Email, OU=http://www.usertrust.com, O=The USERTRUST Network, L=Salt Lake City, ST=UT, C=US
Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
Key: Sun RSA public key, 2048 bits
modulus: 22498783463083432959284168386409369291955038543860490014652552599946227610701597170140025777460440051576940055114151688564424450502962692946914121648464149848971060576483061771422853543951215013563325278089962342124385107871785292348304269132449951488798696535892014442011779480523971888046182115783313222830528011595242687378120162559160959607028365210240184157701430166819711652309059420982812476846459005227651384919840114419411479826761790470294309563612921306187982315796035562139890571490770636907160827366435324974533991196628542326996888957757240366713401462322756766583136758771465334269521766556285170101483
public exponent: 65537
Validity: [From: Fri Jul 09 13:28:50 EDT 1999,
To: Tue Jul 09 13:36:58 EDT 2019]
Issuer: CN=UTN-USERFirst-Client Authentication and Email, OU=http://www.usertrust.com, O=The USERTRUST Network, L=Salt Lake City, ST=UT, C=US
SerialNumber: [ 44be0c8b 500024b4 11d33625 2567c989]
Certificate Extensions: 5
[1]: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
CA:true
PathLen:2147483647
]
[2]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
[DistributionPoint:
[URIName: http://crl.usertrust.com/UTN-USERFirst-ClientAuthenticationandEmail.crl]
Это сервлет:
package com.airline.controllers;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.airline.models.FlightClass;
import com.airline.models.Gender;
import com.airline.models.Passenger;
import com.airline.service.PassengerService;
/**
* Servlet implementation class AddPassenger
*/
@WebServlet("/AddPassenger")
public class AddPassenger extends HttpServlet {
private static final long serialVersionUID = 1L;
@EJB
PassengerService ps;
/**
* @see HttpServlet#HttpServlet()
*/
public AddPassenger() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// response.getWriter().append("Served at: ").append(request.getContextPath());
Passenger p = new Passenger();
p.setFirstName("Daniel");
p.setLastName("Charnetz");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 1986);
cal.set(Calendar.MONTH, 9);
cal.set(Calendar.DAY_OF_MONTH, 10);
Date dob = cal.getTime();
p.setDob(dob);
p.setGender(Gender.Male);
p.setFlightClass(FlightClass.Coach);
System.out.println(p);
System.out.println("Passenger object has been set.");
ps.addPassenger(p);
System.out.println("Passenger has been saved");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// doGet(request, response);
}
}
Это служба EJB:
package com.airline.service;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.airline.models.Passenger;
/**
* Session Bean implementation class PassengerService
*/
@Stateless
@LocalBean
public class PassengerService {
/**
* Default constructor.
*/
public PassengerService() {
// TODO Auto-generated constructor stub
}
// inject the airline persistence unit (database unit) as it appears in the xml file
// instead of injecting an enterprise java bean (@EJB), inject a database EntityManager object from the xml file by the name of "airline"
@PersistenceContext(unitName="airline") // inject managed database into an EntityManager object.
private EntityManager em; // allows us to communicate with the database through its methods.
public void addPassenger(Passenger p)
{
em.persist(p);
}
}
Это класс сущности:
package com.airline.models;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
/**
* Entity implementation class for Entity: Passanger
*
*/
@Entity
// Go to project's Properties -> JPA, then look for: "Persistent class management", and select option: "Discover annotated classes automatically, and press "apply."
// so this manage's class name doesn't need to be added to the xml file.
// OR: explicitly add the name of the class in the xml file within <class>com.airline.models.Passenger</class> before the proterties tag and after the jts tag.
public class Passenger implements Serializable {
@Transient // We don't want this field to represent a column in our database.
private static final long serialVersionUID = 1L;
public Passenger() {
super();
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String firstName;
private String lastName;
@Temporal(TemporalType.DATE) // This is so that the date can be saved as a date in the dob column in the
// database.
private Date dob;
@Enumerated(EnumType.STRING) // The value in Gender column in database would be saved as a digit if we don't
// put this as String annotation.
private Gender gender;
@Enumerated(EnumType.STRING) // ordinal (digit) is the default, instead of STRING.
private FlightClass flightClass;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
public FlightClass getFlightClass() {
return flightClass;
}
public void setFlightClass(FlightClass flightClass) {
this.flightClass = flightClass;
// toString method here
}
}
Это файл JPA персистентности xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<persistence-unit name="airline">
<jta-data-source>jdbc/airline</jta-data-source>
<properties>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"></property>
</properties>
</persistence-unit>
</persistence>
У меня есть два класса enum, один для пола и один для класса обслуживания рейсов, которые я здесь не перечисляю , но они говорят сами за себя. Игнорировать все комментарии в коде; Я делаю это в учебных целях.
Кроме того, чтобы вы знали, все предыдущие не-JPA проекты, над которыми я работал, работали отлично, когда развертываются, но ни один из них не работает сейчас, так как я удалил Glassfi sh и переустановил его , ПРИМЕЧАНИЕ. Объект «Пассажир», который я пытаюсь напечатать и сохранить в сервлете этого проекта (см. Сервлет), не печатается и не сохраняется в базе данных, поэтому проблема заключается в сервере.
Большое спасибо за то, что приняли время! Я действительно застрял :)