Este proyecto proporciona un portal de interfaz web para que los usuarios finales trabajen con el proceso de aprobación de préstamos del ficticio Westbank. Además, para fines de prueba, también incluye los servicios web que proporcionan las funciones comerciales necesarias utilizadas por el proceso de aprobación del préstamo.
El portal se puede implementar como una aplicación ( *.war ) en un servidor de aplicaciones web como Apache Tomcat, Eclipse Jetty, JBoss Wildfly como, etc. Sin embargo, podemos ejecutarlo directamente en la línea de comandos.
Vaya a la carpeta del proyecto y continúe con el siguiente comando.
mvn jetty:runLuego abra un navegador web a http: // localhost: 9999/portal para la página principal del portal.
Algunas otras páginas para el desarrollo/prueba
Verificación de la base de datos subyacente (ver com.westbank.web.DevController ): http: // localhost: 9999/portal/dev.html
Verificación de la lista de servicios web en ejecución: http: // localhost: 9999/portal/servicios
Para iniciar sesión como personal (gerente, supervisor, secretario o corredor), vaya a la página: http: // localhost: 9999/portal/staff/login.html
Nota: ID y contraseña para el personal se enumeran temporalmente en la página http: // localhost: 9999/portal/dev.html
mvn -DskipTests clean package Como cambiar a configuraciones sin XML con Servlet 3.0+, la configuración principal de la aplicación web es PortalWebApplicationInitializer en lugar del tradicional WEB-INF/web.xml .
PortalWebApplicationInitializer primero carga el contexto raíz y registra dos configuraciones PersistenceConfiguration (para acceso a datos) y ServiceConfiguration (para publicar servicios web/SOAB)AnnotationConfigWebApplicationContext para el Spring DispatcherServletAnnotationConfigWebApplicationContext registra la configuración MVC en WebMvcConfigurationDispatcherServlet servirá a todos *.html y /portal/*PortalWebApplicationInitializer también cargará otro servlet CXFServlet para atender los servicios web/SOAB a /services/* La configuración para Spring MVC está en WebMvcConfiguration :
Implementa WebMvcConfigurer y se anota con @EnableWebMvc (equivalente a <mvc:annotation-driven /> en spring xml)
Habilita el manejo predeterminado del servlet
Agrega recursos de recursos para servir /resources/
Configura View Resolver para servir JSP/JSTL AT /WEB-INF/view/ y para .jsp
Configura MessageSource para servir varios idiomas en i18n/messages-XXX.properties
Otros recursos como CSSS, imágenes y Javassripts están en las carpetas src/main/webapp/[css | images | js ] .
src/main/resources/i18n/messages.properties para la información que se muestra a los clientes, como notificaciones de éxito y error.
src/main/resources/logback.xml para logback
La manipulación y la persistencia de datos se realizan utilizando Spring JPA / Hibernate configurado a través de PersistenceConfiguration .
@Configuration @EnableJpaRepositories , @EnableTransactionManagement , @ComponentScanjavax.sql.DataSource con la implementación subyacente HikariDataSource de HikaricpentityManagerFactory con LocalContainerEntityManagerFactoryBeanJpaTransactionManagerDataSourceInitializer para configurar algunos datos utilizando la load-user-and-role.sql Las entidades de dominio se anotan con las convenciones de JPA en com.westbank.domain
Los repositorios de datos se encuentran en com.westbank.repository para manipular los datos/objetos subyacentes utilizando EntityManager
Los servicios de datos (incluida alguna lógica de negocios) están en com.westbank.service trabajando en la parte superior de los repositorios
El RDBMS utilizado actualmente está en memoria H2 para una huella de memoria mínima. Sin embargo, cualquier otro RDBMS también puede usarse. Para usar otros RDBMS en su lugar, solo tenga en cuenta los siguientes puntos:
WESTBANKDBwestbank con contraseña secret y asigne a ese usuario a la base de datos o use sus valores preferidos y actualice hibernate.properties en consecuenciapom.xml .mvn jetty:run para verificar si la aplicación web funciona.logback.xml para la depuración. Este proyecto también incluye algunos servicios web que utilizan Jax-WS / Apache CXF para proporcionar las funciones comerciales que necesitan el proceso de aprobación del préstamo. Estas interfaces de servicio web ( *.wsdl ) están en la carpeta 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
El complemento Maven cxf-codegen-plugin de Apache CXF se utiliza para generar código Java a partir de los servicios mencionados anteriormente (es decir, el desarrollo del servicio contrato ). Las fuentes Java generadas están bajo el paquete base com.westbank.ws .
El complemento M2ECLIPSE que admite Maven en Eclipse invocará el Apache CXF
cxf-codegen-pluginsiempre que importe este proyecto en Eclipse, las cosas generadas existentes se sobrescribirán innecesariamente. Por lo tanto, el complemento está actualmente deshabilitado. Siempre que se modifique WSDL, habilite este complemento y ejecute el comandomvn generate-sourcespara volver a generar el código Java.
La implementación real de la lógica comercial de cada servicio web se encuentra en la clase Java correspondiente llamada com.westbank.ws.impl.XXXImpl en el que ' xxx ' es el nombre de ese servicio web. Para alterar estos servicios, eche un vistazo a la carpeta WEB-INF/wsdl . Después de modificar los WSDLS, simplemente ejecute mvn clean generate-sources para volver a generar el código Java.
La configuración para publicar servicios web utilizando Apache CXF y Spring se proporciona en ServiceConfiguration cargada por el contexto de la aplicación raíz. A su vez, carga las definiciones de Service Bean en ServiceBeans .
Como la aplicación web se está ejecutando, abra un navegador web en http: // localhost: 9999/portal/servicios para ver una lista de servicios web en ejecución.
Para fines de pruebas y demostraciones adicionales, algunos valores especiales están codificados en las lógicas de servicios web:
com.westbank.ws.impl.BankPrivilegeImpl )com.westbank.ws.impl.BankInformationImpl )com.westbank.ws.impl.LoanRiskImpl )com.westbank.ws.impl.TaskDispatchImpl )true , de lo contrario, false (ver com.westbank.ws.impl.CreditWorthinessImpl )