Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / выполнение метода java на ZEN странице / 4 сообщений из 4, страница 1 из 1
02.10.2009, 13:35
    #36229532
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение метода java на ZEN странице
подскажите пожалуйста как сиё осуществить:
есть такой класс:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
/// Created using the page template: Default
Class t.tt Extends %ZEN.Component.page
{

Parameter APPLICATION;
Parameter PAGENAME;
Parameter DOMAIN;

XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page xmlns="http://www.intersystems.com/zen" title="">
<button caption="dfasdf" onclick="zenPage.cl();"/>
</page>
}

Method cl() [ Language = javascript ]
{
	//alert('ok')
             this.jv();
}

Method jv() [ Language = java ]
{
	//import org.apache.poi.poifs.filesystem.*;
	//import org.apache.poi.hssf.usermodel.*;
	//import java.io.*;
class T1{
	public static void main(String[] args){
		
		try
		{
			org.apache.poi.poifs.filesystem.POIFSFileSystem fs = new org.apache.poi.poifs.filesystem.POIFSFileSystem(new java.io.FileInputStream("C:/workbook.xls"));
			org.apache.poi.hssf.usermodel.HSSFWorkbook wb = new org.apache.poi.hssf.usermodel.HSSFWorkbook(fs);
			org.apache.poi.hssf.usermodel.HSSFSheet sheet1 = wb.createSheet("new sheet");

			org.apache.poi.hssf.usermodel.HSSFRow row1 = sheet1.createRow( 0 );
			org.apache.poi.hssf.usermodel.HSSFCell cell1 = row1.createCell( 0 );
			cell1.setCellValue( 1 );
			row1.createCell( 1 ).setCellValue( 1 . 2 );
			row1.createCell( 3 ).setCellValue(true);
			java.io.FileOutputStream fileOut = new java.io.FileOutputStream("C:/workbook.xls");
			wb.write(fileOut);
			fileOut.close();
			//System.out.println("OK!");
		
		}
		catch (IOException e)
		{
			//System.out.println(e.toString());
		}		
	}
}
}

}
для выполнения простого java запускал так:
Код: plaintext
javac -classpath ./;./poi- 3 . 2 -FINAL- 20081019 .jar T1
все срабатывало, как видно дополнительно использовалась внешняя библиотека POI, котороя и позволяла работать с файлом Excel

Вопрос:
возможно ли выполнение моего кода?
что нужно сделать что бы прописать дополнительную библиотеку?
...
Рейтинг: 0 / 0
02.10.2009, 16:03
    #36229937
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение метода java на ZEN странице
http://docs.intersystems.com/cache20091/csp/docbook/DocBook.UI.Page.cls?KEY=ROBJ_method_language][Language]
Для проверки посмотрите результат компиляции такого класса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Class test.a [Abstract]
{

Projection JavaProjection As %Projection.Java(ROOTDIR = "C:\CacheJava\src");

ClassMethod test() [ Language = java ]
{
    System.out.println("Привет из Caché!");
}
}
Чтобы вызвать из Caché код на Java, воспользуйтесь Java Gateway .
По принципу работы он очень схож с .NET Gateway .
...
Рейтинг: 0 / 0
03.10.2009, 22:16
    #36231090
Ymka2007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение метода java на ZEN странице
а применительно к Cache есть что нибудь на примете из документации?
если не трудно можно поподробнее разжевать для "особо" ))) не вкуривающих и плохо знающих англицкий язык.
или який нибудь рабочий пример, если есть конечно )))
заранее превелико благодарен )))
...
Рейтинг: 0 / 0
05.10.2009, 11:24
    #36232262
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение метода java на ZEN странице
Опишу очень кратко применительно к Caché 2010.1:
1) создаёте файл "test.jar" с классом "test.Remote":
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
package test;

public class Remote {
  public static int Add(int a, int b) {
    return a + b;
  }
}
2) создаёте один раз Ваше определение объектного шлюза:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  set gw=##class(%Net.Remote.ObjectGateway).%New()
  set gw.Name="testJAVA"
  set gw.Type= 1 
  set gw.Server="127.0.0.1" ;заметьте, СУБД Caché и Java/.NET Шлюзы могут находиться на разных компьютерах.
  set gw.Port= 55555 
  set gw.JDKVersion="JDK16"
  set gw.JavaHome="C:\Program Files\Java\jre6"
  set gw.ClassPath=""
  set gw.JVMArgs=""

  ;set gw... остальные параметры можно оставить по умолчанию

  d gw.%Save()
Посмотреть результат этой операции Вы можете через Портал [Домашняя страница] > [Конфигурация] > [Настройки Object/SQL Шлюза] > [Объектные Шлюзы];
3) запускаете локально Ваш шлюз (можно автоматизировать через ^ZSTART):
Код: plaintext
1.
d ##class(%Net.Remote.Service).StartGateway("testJAVA", 1 )
или вручную из Портала;
4) в студии запускаете Мастер Java-Шлюза. Вводите всё что Вас попросят, включая путь к файлу "test.jar". Генерируете прокси-классы в Caché;
5) вызываете из Caché Ваш java-код:
Код: plaintext
1.
2.
3.
4.
  d ##class(%Net.Remote.Service).OpenGateway("testJAVA",.ogw)
  d ##class(%Net.Remote.Service).ConnectGateway(ogw,.gw)
  w "1+2=",##class(test.Remote).Add(gw, 1 , 2 ),!
  d gw.%Disconnect()

PS: также Вы можете использовать более сложные типы Java из Caché: java.util.ArrayList, java.util.HashMap и т.д.
Детали посмотрите в примере %CACHE%\dev\java\samples\remote\ и классе "%Net.Remote.Java.Test".

PPS: работа с dotNET аналогична. Подробнее опишу в одной из своих статей.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / выполнение метода java на ZEN странице / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]