由于工作需要,项目中需要集成Autovue用来做预览、标注。
https://vip.kingdee.com/questions/237677914287030272?productLineId=1
(本人是开发在这个地址下载的,如果企业想用,请购买正版)
运行安装包,选择安装目录(尽量不要中文,文件夹不要用空格)







继续,点击“下一步”,直至完成即可。
记事本打开D:\Oracle\AutoVue\bin\jvueserver.properties(D:\Oracle\AutoVue为安装目录)
在最下面增加一行配置:jvueserver.authentication.enable=FALSE

双击运行:D:\Oracle\AutoVue\bin\jVueServerX.exe,出现如下表示安装成功。

autovue的接口,我们用一个tomcat来转发,供给外部服务调用,这里需要挪动一些东西,来组装这个tomcat,可以参考:https://blog.csdn.net/qq532026984/article/details/111597748
组装出的tomcat中web服务大概结构如下:



其中,组装上述tomcat里的有三个文件是自增的:
SimpleCORSFilter
com.duoduo.SimpleCORSFilter
Origin
http://127.0.0.1:5098,http://172.16.5.97:5098
Methods
POST, GET, OPTIONS, DELETE
Age
3600
Headers
Content-type,x-requested-with,Authorization,x-ui-request,lang,Accept
Credentials
true
SimpleCORSFilter
/*
VueJNLPServlet
com.cimmetry.servlet.VueJNLPServlet
URL-Dir
/AutoVueClient
Cookies
JSESSIONID;
VueRDVServlet
com.cimmetry.servlet.VueRDVServlet
VueKeyPairServlet
com.cimmetry.servlet.VueKeyPairServlet
VueServlet
com.cimmetry.servlet.VueServlet
JVueServer
127.0.0.1:5099;172.16.5.97:5099
Verbose
false
EnableSSL
false
VueRDVServlet
/servlet/VueRDVServlet
VueJNLPServlet
/servlet/VueJNLPServlet
VueKeyPairServlet
/servlet/VueKeyPairServlet
VueServlet
/servlet/VueServlet
30
将下面的类自行编译成class文件,放到D:\kaifa\autovue\apachetomcat\webapps\Autovue\WEB-INF\classes\com\duoduo文件夹下:

package com.duoduo;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class SimpleCORSFilter implements Filter {
private String origin;
private String methods;
private String age;
private String headers;
private String credentials;
public void init(FilterConfig filterConfig) throws ServletException {
origin = filterConfig.getInitParameter("Origin");
methods = filterConfig.getInitParameter("Methods");
age = filterConfig.getInitParameter("Age");
headers = filterConfig.getInitParameter("Headers");
credentials = filterConfig.getInitParameter("Credentials");
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String[] allowDomain = origin.split(",");
Set allowedOrigins = new HashSet(Arrays.asList(allowDomain));
String originHeader = request.getHeader("Origin");
if (allowedOrigins.contains(originHeader)) {
//跨域请求,*代表允许全部类型)
response.setHeader("Access-Control-Allow-Origin", originHeader);
//允许请求方式 "POST, GET, OPTIONS, DELETE"
response.setHeader("Access-Control-Allow-Methods", this.getMethods());
//用来指定本次预检请求的有效期,单位为秒,在此期间不用发出另一条预检请求 "3600"
response.setHeader("Access-Control-Max-Age", this.getAge());
//请求包含的字段内容,如有多个可用哪个逗号分隔如下 "Content-type,x-requested-with,Authorization,x-ui-request,lang,Accept"
response.setHeader("Access-Control-Allow-Headers", this.getHeaders());
//访问控制允许凭据,true为允许
response.setHeader("Access-Control-Allow-Credentials", this.getCredentials());
// 浏览器是会先发一次options请求,如果请求通过,则继续发送正式的post请求
// 配置options的请求返回
if (request.getMethod().equals("OPTIONS")) {
response.setStatus(200);
response.getWriter().write("OPTIONS returns OK");
return;
}
}
// 传递业务请求处理
chain.doFilter(servletRequest, servletResponse);
}
public String getOrigin() {
return origin;
}
public void setOrigin(String origin) {
this.origin = origin;
}
public String getMethods() {
return methods;
}
public void setMethods(String methods) {
this.methods = methods;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getHeaders() {
return headers;
}
public void setHeaders(String headers) {
this.headers = headers;
}
public String getCredentials() {
return credentials;
}
public void setCredentials(String credentials) {
this.credentials = credentials;
}
}
Oracle AutoVue - JNLP
Oracle AutoVue
其中的showFile方法为本人新增的,其他基本都在原来的文件中有,showFile是在autovue.js中打开autovue客户端后的回调里调用。
autovue.js文件修改:

下面是一些我用到的api的解释:
// 设置预览的文件 (fileNow为文件下载地址)
myAvApp.setFile(fileNow);
// 设置只读
//(需要将D:\Oracle\AutoVue\bin\Profiles\custom.gui文件中的PERM_READ改为PERM_HIDE)
myAvApp.setGUI(‘custom.gui’);
// 默认打开所有标注
myAvApp.openMarkup(‘*’);
需要注意的是,这里的调用顺序错了,可能只读就不生效了,按我上面的顺序来。
本人使用方式是,在项目中,页面中ifram嵌入av_jnlp2.html,这样就能调起预览了。
目前,本人项目的部署,是把autovue和tomcat部署到同一台服务器上。
然后,ifram嵌入时有跨域拦截之类的,是使用的nginx做的代理。