У меня есть кнопка на XPage, где я хочу подключиться к удаленному экземпляру OpenOffice. OpenOffice запускается и ожидает подключения через сокет.
Событие onclick кнопки запускается следующим SSJS:
oo = new com.test.OpenOffice(); oo.init("host=127.0.0.1,port=8107"); oo.openFile("C:\\TEMP\\Test.odt");
Код вызывает исключение jva.lang.IlleagalStateException: NotesContext not initialized for the thread
Исключение возникает в методе init
класса OpenOffice
.
Соответствующими частями класса OpenOffice является следующий код:
public class DHOpenOffice implements Serializable { private static final long serialVersionUID = -7443191805456329135L; private XComponentContext xRemoteContext; private XMultiComponentFactory xMCF; private XTextDocument oTextDocument; public DHOpenOffice() { xRemoteContext = null; xMCF = null; oTextDocument = null; } public void init(String hostAdr) throws java.lang.Exception { xRemoteContext = null; XComponentContext xLocalContext = Bootstrap.createInitialComponentContext(null); XUnoUrlResolver xUrlResolver = UnoUrlResolver.create(xLocalContext); String sConnect = "uno:socket," + hostAdr + ",tcpNoDelay=0;urp;StarOffice.ServiceManager"; Object context = xUrlResolver.resolve(sConnect); xRemoteContext = UnoRuntime.queryInterface(XComponentContext.class, context); xMCF = xRemoteContext.getServiceManager(); }
Строка кода Object context = xUrlResolver.resolve(sConnect);
вызывает исключение.
Почему это происходит? В чем причина этого исключения и как я могу разрешить ситуацию?
N.B.: Код класса без проблем работает в отдельном приложении. Ошибка возникает только тогда, когда код запускается кодом SSJS.