From ed5768da1363742eee34c6c71db010099da6fad8 Mon Sep 17 00:00:00 2001
From: ludc <pUXmgxCf6A>
Date: 星期三, 17 五月 2023 21:55:07 +0800
Subject: [PATCH] 以及发布webservice接口功能搭建,将通通用接口移植过来
---
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/AttributeMapConfig.java | 41 ++++++
Source/UBCS/ubcs-service/ubcs-webservice/pom.xml | 113 ++++++++++++++++++
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/annotation/VciWebservice.java | 36 ++++++
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/WsClientUtil.java | 61 ++++++++++
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/VciCxfPublishConfig.java | 85 ++++++++++++++
5 files changed, 336 insertions(+), 0 deletions(-)
diff --git a/Source/UBCS/ubcs-service/ubcs-webservice/pom.xml b/Source/UBCS/ubcs-service/ubcs-webservice/pom.xml
index e69de29..44f2496 100644
--- a/Source/UBCS/ubcs-service/ubcs-webservice/pom.xml
+++ b/Source/UBCS/ubcs-service/ubcs-webservice/pom.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <groupId>com.vci.ubcs</groupId>
+ <artifactId>ubcs-service</artifactId>
+ <version>3.0.1.RELEASE</version>
+ </parent>
+ <artifactId>ubcs-webservice</artifactId>
+ <name>${project.artifactId}</name>
+ <version>${bladex.project.version}</version>
+ <packaging>jar</packaging>
+
+ <modelVersion>4.0.0</modelVersion>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
+ <version>3.3.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-logging</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <version>2.0.1.Final</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <version>2.17.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ <version>2.17.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ <version>2.17.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-jul</artifactId>
+ <version>2.17.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.vci.ubcs</groupId>
+ <artifactId>ubcs-util-api</artifactId>
+ <version>3.0.1.RELEASE</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <configuration>
+ <username>${docker.username}</username>
+ <password>${docker.password}</password>
+ <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository>
+ <tag>${project.version}</tag>
+ <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
+ <buildArgs>
+ <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+ </buildArgs>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/WsClientUtil.java b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/WsClientUtil.java
index e69de29..19965ff 100644
--- a/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/WsClientUtil.java
+++ b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/WsClientUtil.java
@@ -0,0 +1,61 @@
+/*
+package com.vci.ubcs.webservice;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.commons.lang3.StringUtils;
+
+public class WsClientUtil {
+
+ */
+/**
+ * axis2璋冪敤瀹㈡埛绔�
+ *
+ * @param url 璇锋眰鏈嶅姟鍦板潃
+ * @param nameSpace 鍛藉悕绌洪棿
+ * @param soapAction soapAction
+ * @param method 鏂规硶鍚�
+ * @param paramName 鍙傛暟鍚嶇О
+ * @param sendData 璇锋眰鎶ユ枃
+ * @param timeOutInMilliSeconds 瓒呮椂鏃堕棿
+ * @return String 绫诲瀷鐨勫搷搴旀姤鏂�
+ *//*
+
+ public static String sendMsg(String url, String nameSpace,String soapAction, String method, String paramName, String sendData, long timeOutInMilliSeconds) throws Exception {
+ ServiceClient serviceClient = new ServiceClient();
+ Options option = new Options();
+ option.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+ option.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+
+ // 鍊间负targetNamespace+methodName
+ if(StringUtils.isEmpty(soapAction)){
+ soapAction = nameSpace+method;
+ }
+ option.setAction(soapAction);
+
+ EndpointReference epfs = new EndpointReference(url);
+ option.setTo(epfs);
+ serviceClient.setOptions(option);
+
+ OMFactory fac = OMAbstractFactory.getOMFactory();
+ OMNamespace namespaceOM = fac.createOMNamespace(nameSpace, "");
+ OMElement element = fac.createOMElement(method, namespaceOM);
+ OMElement theCityCode = fac.createOMElement(paramName, namespaceOM);
+ theCityCode.setText(sendData);
+ element.addChild(theCityCode);
+
+
+ OMElement resultOM = serviceClient.sendReceive(element);
+
+ String result = resultOM.getFirstElement().getText();
+ return result;
+ }
+}
+*/
diff --git a/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/annotation/VciWebservice.java b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/annotation/VciWebservice.java
index e69de29..af6a79f 100644
--- a/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/annotation/VciWebservice.java
+++ b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/annotation/VciWebservice.java
@@ -0,0 +1,36 @@
+package com.vci.ubcs.webservice.annotation;
+
+import org.springframework.core.annotation.AliasFor;
+import org.springframework.stereotype.Component;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * webservice鐨勫疄鐜扮被
+ * @author weidy
+ * @date 2022-08-27
+ */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Component
+public @interface VciWebservice {
+
+ /**
+ * bean鐨勫悕绉�
+ * @return
+ */
+ @AliasFor(
+ annotation = Component.class
+ )
+ String value() default "";
+
+ /**
+ * 璺緞锛岄粯璁ょ瓑浜庡綋鍓峛ean鐨勫悕瀛�
+ * @return 璺緞
+ */
+ String path() default "";
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/AttributeMapConfig.java b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/AttributeMapConfig.java
index e69de29..89d1203 100644
--- a/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/AttributeMapConfig.java
+++ b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/AttributeMapConfig.java
@@ -0,0 +1,41 @@
+package com.vci.ubcs.webservice.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+@ConfigurationProperties(prefix="attrconfig")
+@Component
+public class AttributeMapConfig {
+ private Map<String,String> system_attrmap;
+
+ /****
+ * 鏃犱汉鏈轰富鏁版嵁涓嶦RP闆嗘垚瀛楁鍊艰浆鎹�
+ */
+ private Map<String,String> attrKey1ToKey2Map;
+ public Map<String, String> getSystem_attrmap() {
+ return system_attrmap;
+ }
+ public void setSystem_attrmap(Map<String, String> system_attrmap) {
+ this.system_attrmap = system_attrmap;
+ }
+
+
+ public Map<String, String> getAttrKey1ToKey2Map() {
+ return attrKey1ToKey2Map;
+ }
+
+ public void setAttrKey1ToKey2Map(Map<String, String> attrKey1ToKey2Map) {
+ this.attrKey1ToKey2Map = attrKey1ToKey2Map;
+ }
+
+ @Override
+ public String toString() {
+ return "AttributeMapConfig{" +
+ "system_attrmap=" + system_attrmap +
+ ", attrKey1ToKey2Map=" + attrKey1ToKey2Map +
+ '}';
+ }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/VciCxfPublishConfig.java b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/VciCxfPublishConfig.java
index e69de29..0825566 100644
--- a/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/VciCxfPublishConfig.java
+++ b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/VciCxfPublishConfig.java
@@ -0,0 +1,85 @@
+package com.vci.ubcs.webservice.config;
+
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.vci.ubcs.starter.web.util.ApplicationContextProvider;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import com.vci.ubcs.webservice.annotation.VciWebservice;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.cxf.Bus;
+import org.apache.cxf.jaxws.EndpointImpl;
+import org.springframework.aop.support.AopUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Map;
+
+/**
+ * 鍙戝竷鏈嶅姟绫�
+ * @author weidy
+ * @date 2020/3/27
+ */
+@Configuration
+@Slf4j
+public class VciCxfPublishConfig {
+
+ /**
+ * 娉ㄥ叆cxf鐨刡us
+ */
+ @Autowired(required = false)
+ private Bus bus;
+
+
+ /**
+ * 鍙戝竷绔欑偣鏈嶅姟
+ * @return 绔欑偣鏈嶅姟
+ */
+ @Bean
+ public void autoPushCxf(){
+ log.info("寮�濮嬭繘琛岃嚜鍔ㄥ彂甯僿ebService鎺ュ彛");
+ Map<String, Object> beansWithAnnotation = ApplicationContextProvider.getApplicationContext().getBeansWithAnnotation(VciWebservice.class);
+ if(!CollectionUtils.isEmpty(beansWithAnnotation)){
+ //鎵捐繖浜沚ean鐨�
+ beansWithAnnotation.forEach((beanName,bean)->{
+ Class<?> targetClass = AopUtils.getTargetClass(bean);
+ VciWebservice annotation = targetClass.getDeclaredAnnotation(VciWebservice.class);
+ if(annotation == null){
+ targetClass.getAnnotation(VciWebservice.class);
+ }
+ if(annotation!=null){
+ //鎴戜滑鍘绘壘璺緞鍜屽悕绉�
+ String name = annotation.value();
+ if(StringUtils.isBlank(name)){
+ name = VciBaseUtil.toLowForFirst(targetClass.getSimpleName()).replace(".class","");
+ }
+ String path = annotation.path();
+ if(StringUtils.isBlank(path)){
+ path = "/" + name;
+ }
+ //娉ㄥ唽
+ EndpointImpl endpoint = new EndpointImpl(bus,bean);
+ endpoint.publish(path);
+ log.info(String.format("鍙戝竷鎺ュ彛鍦板潃锛歔%s]", path));
+ registerBean(endpoint,name + "_EndPoint");
+ }
+ });
+ }
+ log.info("weBservice鎺ュ彛鑷姩鍙戝竷缁撴潫");
+ }
+
+ /**
+ * 鍔ㄦ�佹敞鍏ean
+ * @param singletonObject 娉ㄥ叆瀵硅薄
+ * @param beanName bean鍚嶇О
+ */
+ public void registerBean(Object singletonObject,String beanName) {
+
+ //鑾峰彇BeanFactory
+ DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) ApplicationContextProvider.getApplicationContext().getAutowireCapableBeanFactory();
+
+ //鍔ㄦ�佹敞鍐宐ean.
+ defaultListableBeanFactory.registerSingleton(beanName, singletonObject);
+ }
+}
--
Gitblit v1.9.3