webswing配置和部署
前言
Webswing是专用的Web服务器,用于在浏览器中运行基于Swing的Java应用程序。
多年来,Swing一直是许多公司和个人创建丰富应用程序的首选框架。他们全都投入了大量的金钱和精力来开发这些应用程序。但是如今,Swing框架已成为它们的限制因素,因为它们无法在现代Web浏览器中使用这些应用程序。随着Applet技术支持的停止,这些公司几乎没有选择余地,这是Webswing进行救援的地方。几乎不需要额外的工作,就可以像本地应用程序一样在浏览器中立即使用Swing应用程序或Applet。只需使用内置的管理Web界面进行简单配置即可
使用webSwing
在官网(https://www.webswing.org/)下载最新版本压缩包,解压后进入webswing目录运行webswing.bat启动项目,访问localhost:8080/admin 进入控制台,默认账号密码是admin,pwd,运行webSwing需要安装Java环境,至少Java 8+(此教程基于20.1.6版本,新版本可能会有变化,如果操作不成功可参考官方文档)
将Swing程序部署到webSwing
我用swing写了一个简单的记事本功能效果如下
将程序打成jar包,在webswing目录的apps下新建一个目录,把jar包放进去。
创建应用
在管理控制台中,点击右上角的“Create New App”,输入应用程序访问路径,点击Create。
配置应用
找到刚才创建的应用,单击右侧的Confing按钮,进入配置页面。
修改以下配置
//配置项目路径
Home Folder :${webswing.rootDir}/apps/myapp
//设置jar包地址
Class Path :${webswing.rootDir}/apps/myapp/Notepad.jar
//设置main方法入口
Main Class:swing.demo.NoteBook
//匿名访问
Security Module Name :NONE
修改完成后点击Apply
点击上方/myapp蓝色链接或者地址栏输入localhost:8080/myapp访问应用
部署到tomcat
把Webswing文件夹复制到tomcat的bin目录下
复制webswing-server.war到Tomcat的webapps文件夹中
在tomcatconf/catalina.properties文件中添加以下属性。(或使用-DJVM选项指定这些属性)
webswing.warLocation=webapps/webswing-server.war
webswing.configFile=webswing/webswing.config
webswing.tempDirBase=webswing/tmp
webswing.rootDir=webswing
如果使用https增加以下属性
Dwebswing.httpsOnly=true
Dwebswing.cookieSameSite=NONE
如果tomcat启动乱码
修改tomcat的conf下的logging.properties中的参数
java.util.logging.ConsoleHandler.encoding = GBK
解决webSwing跨域问题
如果要将Webswing嵌入到其他域上的页面,则必须在应用程序配置的allowedCorsOrigins选项中启用跨域资源共享,设置*为允许所有域,或使用允许域列表。
修改文件 tomcat/bin下catalina.bat文件,添加以下配置。
set "JAVA_OPTS= -Dwebswing.httpsOnly=true -Dwebswing.cookieSameSite=NONE"
进入谷歌浏览器配置页面 chrome://flags
搜索下面两个属性设置为 disable
#same-site-by-default-cookies
#cookies-without-same-site-must-be-secure
创建tomcat证书
这里使用JDK自带的keytool工具来生成证书
在jdk的安装目录\bin\keytool.exe下打开keytool.exe
命令行中输入以下命令:
keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "D:\tomcat.keystore"
配置tomcat服务器
定位到tomcat服务器的安装目录, 找到conf下的server.xml文件,添加配置。
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="D:\tomcat.keystore"
keystorePass="123456"
clientAuth="false"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
/>
配置说明
Enabled : 服务器启动是否自动启动应用程序
Web Folder : 静态资源路径
Restricted Resources : 通过身份验证才能访问的目录
Localization Folder :国际化语言目录
Icon:图标路径
CORS Origins : 允许跨域请求url列表,设置 * 允许所有
Main Arguments : 接收Url参数(如有特殊字符需要URL转码)
…
会话方式
ALWAYS_NEW_SESSION,每个会话都会启用一个新的应用程序
CONTINUE_FOR_TAB 终止连接或用户刷新页面后,可以在同一个浏览器选项卡中恢复Webswing会话
CONTINUE_FOR_BROWSER 终止连接后,可以在同一浏览器中恢复Webswing会话
CONTINUE_FOR_USER 连接终止后,同一用户可以从任何计算机恢复应用程序会话
文件隔离系统
打开文件隔离系统 Isolated Filesystem:ON
设置上传路径 Upload Folder :${user}/upload
设置完成后每个用户上传和下载都会生成单独的目录文件
解决打开文件乱码问题
修改JVM启动参数 -Dfile.encoding=UTF-8