java sslhandshake сертификат исключения Неизвестный

java web-services java-web-start

1932 просмотра

2 ответа

Снимок экрана с ошибкой сервера com.sun.xml.ws.client.ClientTransportException: ошибка транспорта HTTP: javax.net.ssl.SSLHandshakeException: получено фатальное предупреждение: certificate_unknown

Как решить это исключение ?? Я пытаюсь использовать веб-сервис формы SAP По замыслу Java веб-приложения

      package com.example.Servelet;

    import com.example.Utilities.CalenderX;
import com.example.bean.EmployeeDetailsBean;
import com.sap.xi.a1s.global.EmployeeBasicDataByIdentificationQueryMessageSync;
import com.sap.xi.a1s.global.EmployeeBasicDataResponseMessageSync;
import com.sap.xi.a1s.global.EmployeeBasicDataSelectionByIdentification;
import com.sap.xi.a1s.global.EmployeeSelectionByChangedSinceDate;
import com.sap.xi.a1s.global.QueryEmployeeIn;
import com.sap.xi.a1s.global.Service;
import com.sap.xi.a1s.global.StandardFaultMessage;
import com.sap.xi.ap.common.gdt.QueryProcessingConditions;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.ws.BindingProvider;

         public class ReadEmployeeDetialsFromBydSystem extends HttpServlet {

        static PrintWriter out;
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException, ParseException, DatatypeConfigurationException, StandardFaultMessage {
            response.setContentType("text/html;charset=UTF-8");
             out = response.getWriter();
             EmployeeDetailsBean employeeDetailsString=new EmployeeDetailsBean();

          employeeDetailsString.setFromDateToImportEmployee( request.getParameter("fromdate")); 

           XMLGregorianCalendar date=  CalenderX.stringToXMLGregorianCalendar(employeeDetailsString.getFromDateToImportEmployee());

          EmployeeSelectionByChangedSinceDate changeSinceDate=new EmployeeSelectionByChangedSinceDate();
           changeSinceDate.setInclusionExclusionCode("I");
           changeSinceDate.setIntervalBoundaryTypeCode("1");
           changeSinceDate.setLowerBoundaryEmployeeChangedSinceDate(date);

           EmployeeBasicDataSelectionByIdentification employeeDetailsRequest=new EmployeeBasicDataSelectionByIdentification();
          employeeDetailsRequest.getSelectionByChangedSinceDate().add(changeSinceDate);
            QueryProcessingConditions condtion=new QueryProcessingConditions();
            condtion.setQueryHitsMaximumNumberValue(1000);
            condtion.setQueryHitsUnlimitedIndicator(false);
            EmployeeBasicDataByIdentificationQueryMessageSync finalreq=new EmployeeBasicDataByIdentificationQueryMessageSync();
            finalreq.setEmployeeBasicDataSelectionByIdentification(employeeDetailsRequest);
            finalreq.setProcessingConditions(condtion);

            out.println("file:///F:\\Netbeans\\BydTest/WSDL/StandardEmployee.wsdl");
        ReadEmployeeDetialsFromBydSystem.findBasicDataByIdentification(finalreq);
        }


        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            try {
                processRequest(request, response);
            } catch (ParseException | DatatypeConfigurationException | StandardFaultMessage ex) {
                Logger.getLogger(ReadEmployeeDetialsFromBydSystem.class.getName()).log(Level.SEVERE, null, ex);
            }
        }


        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            try {
                processRequest(request, response);
            } catch (ParseException | DatatypeConfigurationException | StandardFaultMessage ex) {
                Logger.getLogger(ReadEmployeeDetialsFromBydSystem.class.getName()).log(Level.SEVERE, null, ex);
            }
        }


        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>

       private static EmployeeBasicDataResponseMessageSync findBasicDataByIdentification(com.sap.xi.a1s.global.EmployeeBasicDataByIdentificationQueryMessageSync employeeBasicDataByIdentificationQuerySync) throws StandardFaultMessage {
            Service service = new Service();
            QueryEmployeeIn port = service.getBinding();
            String EndPointURL="https://my337603.sapbydesign.com/sap/bc/srt/scs/sap/queryemployeein";
              Map<String, Object> context = ((BindingProvider)port).getRequestContext();
             context.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, EndPointURL);
                context.put(BindingProvider.USERNAME_PROPERTY, "_BYDHRMS");
                context.put(BindingProvider.PASSWORD_PROPERTY, "Welcome1");
                  try{
                    **EmployeeBasicDataResponseMessageSync responses= port.findBasicDataByIdentification(employeeBasicDataByIdentificationQuerySync);**
              for(int i=0;i<responses.getBasicData().size();i++)
              {
                    out.println("Employee ID :"+responses.getBasicData().get(i).getEmployeeID().getValue());

                  for(int j=0;j<responses.getBasicData().get(i).getBiographicalData().size(); j++)
                  {
                        out.println("Employee Name :"+responses.getBasicData().get(i).getBiographicalData().get(j).getGivenName());
                  }

              }



            out.println(responses.getProcessingConditions().getLastReturnedObjectID().getValue());
                }catch(StandardFaultMessage e)
                {
                   System.out.println("EXception : "+e);  
                }
                return null;
        }

    }
Автор: Mugunthan Kumar Источник Размещён: 08.11.2019 11:10

Ответы (2)


0 плюса

Вы пытаетесь создать SSL-соединение с сервером, который не имеет официального сертификата ssl. Вы можете обойти это, импортировав сертификат сервера в хранилище сертификатов java. См. Здесь исключение SSL: javax.net.ssl.SSLHandshakeException: получено фатальное оповещение: certificate_unknown или здесь https://docs.oracle.com/javase/tutorial/security/toolsign/rstep2.html для получения дополнительной информации.

Автор: Guenther Размещён: 20.08.2016 05:01

0 плюса

эта проблема решена

EmployeeBasicDataResponseMessageSync responses= port.findBasicDataByIdentification(employeeBasicDataByIdentificationQuerySync);

** добавьте этот код перед вышеупомянутой строкой **

SSLContext sc = SSLContext.getInstance("SSL");
                        TrustManager[] trustAllCerts = null;
                        sc.init(null, trustAllCerts, new java.security.SecureRandom());
                    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
Автор: Mugunthan Kumar Размещён: 20.08.2016 05:12
Вопросы из категории :
32x32