Dieses Projekt bietet ein Webschnittstellenportal für Endbenutzer, die mit dem Kreditgenehmigungsprozess der fiktiven Westbank zusammenarbeiten können. Außerdem umfasst es zum Testzweck auch die Webdienste, die die erforderlichen Geschäftsfunktionen bereitstellen, die im Rahmen des Kreditgenehmigungsprozesses verwendet werden.
Das Portal kann als Anwendung ( *.war ) in einem Webanwendungsserver wie Apache Tomcat, Eclipse Jetty, JBoss Wildfly usw. bereitgestellt werden. Trotzdem können wir es direkt an der Befehlszeile ausführen.
Gehen Sie zum Projektordner und fahren Sie mit dem folgenden Befehl fort.
mvn jetty:runÖffnen Sie dann einen Webbrowser in http: // localhost: 9999/portal für die portale Hauptseite.
Einige andere Seiten für Entwicklung/Tests
Überprüfen der zugrunde liegenden Datenbank (siehe com.westbank.web.DevController ): http: // localhost: 9999/portal/dev.html
Überprüfen Sie die Liste der ausführenden Webdienste: http: // localhost: 9999/portal/dienste
Um sich als Mitarbeiter (Manager, Supervisor, Angestellter oder Broker) anzumelden
Hinweis: ID und Passwort für Mitarbeiter sind vorübergehend auf Seite http: // localhost: 9999/portal/dev.html aufgeführt
mvn -DskipTests clean package Als Wechsel zu XML-freien Konfigurationen mit Servlet 3.0+ ist die Hauptkonfiguration der Webanwendungen anstelle der herkömmlichen WEB-INF/web.xml PortalWebApplicationInitializer .
PortalWebApplicationInitializer lädt zuerst den Stammkontext und registriert zwei Konfigurationen PersistenceConfiguration (für Datenzugriff) und ServiceConfiguration (zum Veröffentlichen von Web/SOAP -Diensten)AnnotationConfigWebApplicationContext für den Spring DispatcherServletAnnotationConfigWebApplicationContext registriert die MVC -Konfiguration in WebMvcConfigurationDispatcherServlet dient allen *.html und /portal/*PortalWebApplicationInitializer lädt auch ein weiteres Servlet CXFServlet , um die Web/SOAP -Dienste unter /services/* Die Konfiguration für Spring MVC erfolgt in WebMvcConfiguration :
Es implementiert WebMvcConfigurer und ist mit @EnableWebMvc kommentiert (gleichwertig zu <mvc:annotation-driven /> in Spring XML)
Es ermöglicht die Standard -Servlet -Handhabung
Es fügt Ressourcenhandler zum Servieren /resources/
Es konfiguriert Ansicht Resolver, um JSP/JSTL unter /WEB-INF/view/ und für .jsp zu bedienen
Es konfiguriert MessageSource so, dass mehrere Sprachen unter i18n/messages-XXX.properties dienen
Andere Ressourcen wie CSSS, Bilder und Javassripts befinden sich in den Ordnern src/main/webapp/[css | images | js ] .
src/main/resources/i18n/messages.properties für die Informationen, die den Kunden wie Erfolgs- und Fehlerbenachrichtigungen angezeigt werden.
src/main/resources/logback.xml für den logback
Datenmanipulation und Persistenz werden mit Spring JPA / Hibernate durchgeführt, die über PersistenceConfiguration konfiguriert sind.
@Configuration @EnableJpaRepositories , @EnableTransactionManagement , @ComponentScanjavax.sql.DataSource mit der Untergangsumsetzung HikariDataSource von HikaricpentityManagerFactory mit LocalContainerEntityManagerFactoryBeanJpaTransactionManagerDataSourceInitializer um einige Daten mithilfe der Skriptlade load-user-and-role.sql einzurichten Domänenunternehmen werden mit JPA -Konventionen in com.westbank.domain kommentiert
Datenrepositorys finden Sie in com.westbank.repository zum Manipulieren der zugrunde liegenden Daten/Objekte mithilfe von EntityManager
Datendienste (einschließlich einer Geschäftslogik) befinden sich in com.westbank.service , die über die Repositorys arbeiten
Das derzeit verwendete RDBMS ist für minimale Speicherpflichtzdruck in Memory H2. Trotzdem können auch andere RDBMs verwendet werden. Um stattdessen andere RDBMSS zu verwenden, beachten Sie einfach die folgenden Punkte:
WESTBANKDBwestbank mit secret und weisen Sie diesen Benutzer der Datenbank zu oder verwenden Sie Ihre bevorzugten Werte und aktualisieren Sie hibernate.properties entsprechendpom.xml hinzu.mvn jetty:run , um zu überprüfen, ob die Webanwendung funktioniert.logback.xml zum Debuggen ein. Dieses Projekt enthält auch einige Webdienste, die JAX-WS / Apache CXF verwenden, um die im Rahmen des Kreditgenehmigungsverfahrens erforderlichen Geschäftsfunktionen bereitzustellen. Diese Webdienst-Schnittstellen ( *.wsdl ) befinden sich im Ordner WEB-INF/wsdl .
|
+-- BankInformation.wsdl
+-- BankPrivilege.wsdl
+-- CreditWorthiness.wsdl
+-- LoanApprovalClosing.wsdl
+-- LoanFile.wsdl
+-- LoanContract.wsdl
+-- LoanContractSigning.wsdl
+-- LoanRisk.wsdl
+-- LoanSettlement.wsdl
+-- TaskDispatch.wsdl
|
+-- CallbackLoanContract.wsdl
+-- CallbackLoanApproval.wsdl
cxf-codegen-plugin Maven-Plugin von Apache CXF wird verwendet, um Java-Code aus den oben genannten Diensten (dh Contract-First Service Development ) zu generieren. Die generierten Java -Quellen befinden sich unter dem Basispaket com.westbank.ws .
Das M2eclipse -Plugin, das Maven in Eclipse unterstützt, wird den Apache CXF
cxf-codegen-pluginaufrufen, wenn Sie dieses Projekt in Eclipse importieren. Die vorhandenen generierten Dinge werden unnötig überschrieben. Somit ist das Plugin derzeit deaktiviert. Wenn ein WSDL geändert wird, aktivieren Sie dieses Plugin und führen Sie den Befehlmvn generate-sourcesum den Java-Code neu zu generieren.
Die tatsächliche Implementierung der Geschäftslogik jedes Webdienstes befindet sich in der entsprechenden Java -Klasse namens com.westbank.ws.impl.XXXImpl , in der ' xxx ' der Name dieses Webdienstes ist. Um diese Dienste zu ändern, schauen Sie sich das Ordner WEB-INF/wsdl an. Führen Sie nach dem Ändern der WSDLS einfach mvn clean generate-sources aus, um den Java-Code wieder zu erstellen.
Die Konfiguration für die Veröffentlichung von Webdiensten mit Apache CXF und Spring ist in der ServiceConfiguration bereitgestellt, die vom Kontext der Root -Anwendung geladen wird. Es wird wiederum die Service -Bohnen -Definitionen in ServiceBeans geladen.
Öffnen Sie während der Ausführung der Webanwendung einen Webbrowser unter http: // localhost: 9999/portal/dienste, um eine Liste der laufenden Webdienste anzuzeigen.
Für weitere Test- und Demonstrationszwecke sind einige spezielle Werte in der Web Services Logics hart codiert:
com.westbank.ws.impl.BankPrivilegeImpl ).com.westbank.ws.impl.BankInformationImpl )com.westbank.ws.impl.LoanRiskImpl )com.westbank.ws.impl.TaskDispatchImpl ))true , ansonsten false (siehe com.westbank.ws.impl.CreditWorthinessImpl ).