Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java程序Microsoft服务器上每个用户一个进程_Java_Jvm_Multiprocessing_Windows Server 2012 R2 - Fatal编程技术网

Java程序Microsoft服务器上每个用户一个进程

Java程序Microsoft服务器上每个用户一个进程,java,jvm,multiprocessing,windows-server-2012-r2,Java,Jvm,Multiprocessing,Windows Server 2012 R2,我收到要修复的bug。有人编写程序,从其他应用程序中调用打印文档。带有此程序的Jar位于microsoft服务器上,供少数用户使用。问题是当一个用户想要打印,而另一个用户也需要在同一时刻打印。Fox example user1单击打印并进行打印预览,同时user2执行相同的操作,但他没有打印预览,因为文档user2的打印预览显示在屏幕user1上。我不知道臭虫在哪里。可能主应用程序调用相同的jar实例,或者使用相同的进程。这是我的方法代码,当用户单击打印时调用 public void openC

我收到要修复的bug。有人编写程序,从其他应用程序中调用打印文档。带有此程序的Jar位于microsoft服务器上,供少数用户使用。问题是当一个用户想要打印,而另一个用户也需要在同一时刻打印。Fox example user1单击打印并进行打印预览,同时user2执行相同的操作,但他没有打印预览,因为文档user2的打印预览显示在屏幕user1上。我不知道臭虫在哪里。可能主应用程序调用相同的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;
                    }
            }

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

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

findNewlyCreatedFile
xCLoader
xDoc
xComp
xContext
szEmptyArgs
xMCF
似乎都是应该同步的共享成员。从这张截图上看,我们不知道它的其余部分,这段代码根本不是并发安全的。您使用的是引导套接字连接吗?是的,类似这样的东西
libre.xContext=BootstrapSocketConnector.Bootstrap(libre.oooExeFolder)
findNewlyCreatedFile,
xCLoader
xDoc
xComp
xContext
szEmptyArgs
xMCF
似乎是应该同步的共享成员。从这个片段的外观来看,我们不知道它的其余部分,这段代码根本不是并发安全的。您使用的是引导套接字连接吗?是的,类似这样的
libre.xContext=BootstrapSocketConnector.Bootstrap(libre.oooExeFolder)