微服务国产化改造-金蝶Apusic应用服务器
微服务国产化改造-金蝶Apusic应用服务器
一、金蝶Apusic配置
2.1、修改启动端口
注意查看端口是否被使用
lsof -i tcp:9999
修改/opt/AAS/domains/mydomain/config/apusic.conf
<ATTRIBUTE NAME="Port" VALUE="9999" />
2.2、修改jvm启动参数
根据需要,修改/opt/AAS/domains/mydomain/bin/data.xml
<aasjvm>-Xms2g -Xmx2g -XX:MaxPermSize=768m</aasjvm>
2.3、开启DELETE,PUT,TRACE,OPTIONS请求方式
修改文件/opt/AAS/domains/mydomain/config/vm.options
注释apusic.http.disabledMethods
#apusic.http.disabledMethods=DELETE,PUT,TRACE,OPTIONS
二、后端服务改造
2.1、pom.xml改造
排除springboot内嵌tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
添加servlet支持
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
修改打包方式
<packaging>war</packaging>
打包插件配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--如果想在没有web.xml文件的情况下构建WAR,请设置为false。-->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
2.2、启动类修改
继承SpringBootServletInitializer ,重写 configure 方法。
public class OrganizationApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(new Class[]{OrganizationApplication.class});
}
public static void main(String[] args) {
SpringApplication.run(OrganizationApplication.class, args);
}
}
2.3、单域启动多项目
一个域中需要同时启动多个war包,需要修改每个war包配置application.yml
spring.jmx.default-domain=XXX
注意:
多域(每个服务单独)部署需要去掉 spring.jmx.default-domain=XXX 配置,否则会报错。
Apusic中也需要对应修改上下文**(默认二级域名为包名称,可以直接修改部署包名称)**
2.4、Nacos支持
添加配置NacosConfig
import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Configuration;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.Query;
import java.lang.management.ManagementFactory;
import java.util.Set;
@Configuration
public class NacosConfig implements ApplicationRunner {
private static final Logger logger = LoggerFactory.getLogger(NacosConfig.class);
@Autowired(required = false)
private NacosAutoServiceRegistration registration;
@Value("${server.port}")
Integer port;
@Override
public void run(ApplicationArguments args) throws Exception {
if (registration != null && port != null) {
Integer tomcatPort = port;
try {
Integer tmp= getTomcatPort();
if(tmp!=-1) tomcatPort = tmp;
} catch (Exception e) {
e.printStackTrace();
}
registration.setPort(tomcatPort);
registration.start();
}
}
/**
* 获取外部tomcat端口
*/
public Integer getTomcatPort() throws Exception {
MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"),
Query.match(Query.attr("protocol"), Query.value("org.apache.coyote.http11.Http11AprProtocol")));
if (objectNames==null||objectNames.size()==0){
return -1;
}
String port = objectNames.iterator().next().getKeyProperty("port");
return Integer.parseInt(port);
}
}
修改端口,项目运行在Apusic中的端口
2.5、上传文件增加配置 (文件服务模块xfile)
@Configuration
public class MinioConfig {
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver(){
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
resolver.setResolveLazily(true);//resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
resolver.setMaxInMemorySize(40960);
resolver.setMaxUploadSize(200*1024*1024);//上传文件大小 200M
return resolver;
}
}
2.6、quartz-server FeignClient
由于quartz部署在二级域名下,api接口需要添加前缀 /quartz-server
com.zbzk.safe.provider.QuartzProvider
com.zbzk.edu.provider.QuartzTaskProvider
2.7、server-socketio FeignClient
由于socketio部署在二级域名下,api接口需要添加前缀 /server-socketio
com.zbzk.edu.provider.SocketIoProvider
com.zbzk.business.quartz.service.provider.SocketioProvider
com.zbzk.envpro.provider.SocketioProvider
com.zbzk.equ.provider.SocketioProvider
com.zbzk.flow.provider.SocketIoProvider
com.zbzk.safe.provider.SocketIoProvider
com.zbzk.sysadmin.organization.provider.SocketIoProvider
com.zbzk.sysadmin.service.provider.SocketioProvider
2.8、authentication-server FeignClient
由于authentication部署在二级域名下,api接口需要添加前缀 /authentication-server
com.zbzk.auth.client.provider.AuthProvider
由于 authentication-client会被gateway-web引用,所以修改之后需要重新deploy,gateway-web才能获得最新jar包
2.9、gateway-web白名单过滤代码
由于某些项目部署在二级域名下,请求API接口会上前缀,所以白名单过滤方法改为contains包含关系
2.10、内嵌Apusic服务器
1、添加pom依赖
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat com.apusic aams-spring-boot-starter-all 2.1.7.RELEASE
2、aams-spring-boot-starter-all-2.1.7.RELEASE.jar
加入本地:
mvn install:install-file -Dfile=aams-spring-boot-starter-all-2.1.7.RELEASE.jar -DgroupId=com.apusic -DartifactId=aams-spring-boot-starter-all -Dversion=2.1.7.RELEASE -Dpackaging=jar
3、需要在项目根目录下加入license.xml
三、前端项目部署
3.1、部署
1、卸载default应用
2、在build包中添加文件夹WEB-INF
3、修改Apusic上下文为根目录
四、Apusic多域名部署
4.1、复制域
cp -r /opt/AAS/domains/node1 /opt/AAS/domains/新域名XXX
4.2、编辑domains.xml
vi /opt/AAS/domains.xml
4.3、添加启动参数文件
cp /opt/AAS/bin/samples.xml /opt/AAS/bin/新域名XXX.xml
vi /opt/AAS/bin/新域名XXX.xml
4.4、修改域端口
vi /opt/AAS/domains/域/config/apusic.conf
4.5、修改启动上下文
添加 参数
base-context="/"
4.6、启动域
cd /opt/AAS/bin
./startas 新域名XXX
4.7、访问
浏览器输入localhost:6888/admin进入AAS管控页面
输入用户名admin
输入密码 Admin1234
注意:
多域部署需要去掉 spring.jmx.default-domain=XXX 配置,否则会报错。
五、Apusic操作
5.1、启动
1、查看服务启动情况
ps -ef | grep apusic
ps -ef | grep organization (多域)
2、如果项目已启动
kill -9 进程号
3、启动Apusic
在目录 /opt/AAS/domains/mydomain/bin中执行
./startapusic
或者:在目录 /opt/AAS/bin中执行
./startas mydomain
4、后台启动
nohup ./startapusic >/dev/null &
或者:
nohup ./startas mydomain >/dev/null &
5.2、所有启动停止命令
cd /opt/AAS/bin
nohup ./startas mydomain >/dev/null &
nohup ./startas organization >/dev/null &
nohup ./startas syservice >/dev/null &
nohup ./startas safe >/dev/null &
nohup ./startas equipment >/dev/null &
nohup ./startas education >/dev/null &
nohup ./startas envpro >/dev/null &
nohup ./startas xfile >/dev/null &
nohup ./startas report >/dev/null &
netstat -lnp | grep 9910
netstat -lnp | grep 9930
netstat -lnp | grep 9931
netstat -lnp | grep 9932
netstat -lnp | grep 9933
netstat -lnp | grep 9934
netstat -lnp | grep 9935
netstat -lnp | grep 9936
netstat -lnp | grep 9938
kill -9 XXX
六、常见问题
6.1、项目启动redis无法加载
解决办法:
删除jar包: /optAAS/AAS/lib/ext/jedis-2.8.0.jar
6.3、java.lang.UnsatisfiedLinkError
/usr/local/java/jdk1.8.0_91/jre/lib/amd64/libawt_xawt.so: libXtst.so错误
添加启动脚本-Djava.awt.headless=true
6.4、接口访问不了注入DispatcherServlet
@Bean
public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {
return new ServletRegistrationBean(dispatcherServlet,"/*");
}
6.5、java.net.SocketException: 打开的文件过多 (Accept failed)
4.5.1、原因
用 CentOS 做 API 接口服务器供其他终端调用时,并发量高会报错:java.io.IOException: Too many open files。
其原因是在 Linux 下默认的Socket最大连接数为 1024(可以通过 ulimit -n 查看)。
4.5.2、解决
1.在/etc/rc.local 后增加一行
ulimit -SHn 65535
2.在/etc/profile 后增加一行
ulimit -SHn 65535
3.在/etc/security/limits.conf最后加入两行
* soft nofile 65535
* hard nofile 65535
6.6、java.lang.NoSuchMethodError:javax.persistence.Table.indexes()
解决办法:
替换 javax.persistence-2.0.5.jar 为 javax.persistence-api-2.2.jar
附一:端口
附二:路由表
由于存在二级域名,需要修改数据库路由表,路由规则,保留前缀
[{"name":"StripPrefix","args":{"parts":"0"}}]
————————————————
版权声明:本文为CSDN博主「笑谈子云亭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lj15559275886/article/details/120563949
更多推荐
所有评论(0)