Java 程序在 Microsoft Server 上每个用户一个进程

标签 java jvm multiprocessing windows-server-2012-r2

我收到需要修复的错误。有人编写了从其他应用程序调用打印文档的程序。带有此程序的 Jar 位于微软服务器上,供少数用户使用。问题是当一个用户想要打印而其他用户同时也想要打印时。例如,用户1单击打印并进行打印预览,同时用户2执行相同的操作,但他没有打印预览,因为文档用户2的打印预览显示在屏幕用户1上。不知道哪里有bug。也许主应用程序调用相同的 jar 实例或使用相同的进程。这是我的方法代码,当用户单击打印时调用该方法。

public void openCreatedFile() {
        String filePath = "file:///" + findNewlyCreatedFile().replace("\\", "/");
        try {
            if (xContext != null)
                System.out.println("Opening file ...");
            xMCF = xContext.getServiceManager();


            Object oDesktop = xMCF.createInstanceWithContext("com.sun.star.frame.Desktop", xContext);

            xCLoader = UnoRuntime.queryInterface(com.sun.star.frame.XComponentLoader.class, oDesktop);
            com.sun.star.beans.PropertyValue[] szEmptyArgs = new com.sun.star.beans.PropertyValue[0];

            xComp = xCLoader.loadComponentFromURL(filePath, "_blank", 0, szEmptyArgs);
            System.out.println(filePath);
            xDoc = UnoRuntime.queryInterface(com.sun.star.text.XTextDocument.class, xComp);
            xContext = null;
        } catch (Exception e) {
            e.printStackTrace(System.err);
            Thread.currentThread();
        }
    }

最佳答案

您必须更改 BootstrapSocketConnector。这是解决方案:

for(int i = 8100; i<=65535 ; i++){
                if(available(i)){
                    libre.xContext = BootstrapSocketConnector.bootstrap(libre.oooExeFolder, "localhost", i);
                    System.out.println(i);
                    break;
                    }
            }

例如8100,这里你必须使用你正在使用的端口来连接。 例如方法available(),您可以在其中检查最近的可用端口:

private static boolean available(int port) {
        try{
        Socket ignored = new Socket("localhost", port);
            return false;
        } catch (IOException ignored) {
            return true;
        }
    }

关于Java 程序在 Microsoft Server 上每个用户一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45755628/

相关文章:

java - Java中变量的内存地址

python - 为什么 `print` 在 Python 多处理 pool.map 中不起作用

python - 多处理不保留结果

java - 捕获异常并抛出相同的异常?

java - 为什么 Spring 数据抛出 java.sql.SQLException : ResultSet is from UPDATE. 无数据。执行 native mysql 查询

Java:对 CMS 垃圾收集器感到困惑

java - 已用、已提交和最大堆内存的差异

python - 除非程序崩溃,否则子 multiprocessing.Process 没有打印输出

java - 如何使用 Mapbox 绘制箭头

Java 差异方法