Что-то в Glassfi sh имеет сертификат SSL, срок действия которого истек, и я не знаю, как решить проблему - PullRequest
0 голосов
/ 01 апреля 2020

Во-первых, знайте, что я новичок в программировании и в настоящее время прохожу курс по 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 и переустановил его , ПРИМЕЧАНИЕ. Объект «Пассажир», который я пытаюсь напечатать и сохранить в сервлете этого проекта (см. Сервлет), не печатается и не сохраняется в базе данных, поэтому проблема заключается в сервере.

Большое спасибо за то, что приняли время! Я действительно застрял :)

...