Развертывание Servigistics InService > Расширенные конфигурации > Конфигурация URL-адреса печати книги
  
Конфигурация URL-адреса печати книги
Если в вашей среде имеются внешние и внутренние URL-адреса, могут возникать проблемы при печати книг. Существует свойство конфигурации, которое можно задать в такой ситуации.
Свойство: com.ptc.sc.sce.util.SCEBulkPrintUtility.remotePrintServiceExtUrl
Пример: $(wt.webserver.protocol)://<внешнее имя хоста сервера>:внешний http-порт сервера>/PrintMS/rest/PrintService
* 
Это свойство следует изменять только в случае, когда сервер имеет внешний адрес, отличающийся от внутреннего.
Конфигурирование URL загрузки для функциональности bookPrint в кластерной среде
Чтобы настроить URL загрузки для функциональности bookPrint в кластерной среде, выполните следующие шаги:
* 
Эти шаги требуются только в случае, когда приложения Viewer, настроенные в кластерной среде, недоступны пользователям Servigistics InService из внешнего домена и они могут обращаться к сайту доставки Servigistics InService только через URL балансировщика нагрузки.
1. Расширьте настройку по умолчанию com.ptc.sc.sce.services.SCEBulkPrintService и переопределите следующие методы:
getBulkPrintsStatus
printBulk
Эти два метода ответственны за создание URL, который идет к клиенту, содержащему URL загрузки для книги.
2. Добавьте новую запись свойства site.xconf:
<Property name="com.custom.sc.sce.util.CustomSCEBulkPrintUtility.
webAliasPrintServiceUrl"
default="<load balance protocol>://<load balancer host name>:< load balancer
port>/PrintMS/rest/PrintService"
overridable="true"/>
3. Создайте следующие пользовательские JAVA-классы:
CustomSCEBulkPrintService.java
package com.custom.sc.sce.services;
import java.util.List;
import javax.ws.rs.core.MultivaluedMap;
import com.custom.sc.sce.util.CustomSCEBulkPrintUtility;
import com.ptc.sc.conceptualmodel.SCItem;
import com.ptc.sc.conceptualmodel.SCList;
import com.ptc.sc.sce.services.SCEBulkPrintService;
import com.ptc.sc.servicecommon.BulkPrintService;
public class CustomSCEBulkPrintService extends SCEBulkPrintService {
private static final long serialVersionUID = 1L;
/**
* Create a new instance of the
<code>CustomSCEBulkPrintService</code>.
* This factory method is required in order for the method server
process to start successfully.
*/
public static CustomSCEBulkPrintService newCustomSCEBulkPrintService() {
CustomSCEBulkPrintService bulkPrintService = new CustomSCEBulkPrintService();
return bulkPrintService;
}
@Override
public SCList getBulkPrintsStatus(List<String> statusList) throws Exception {
SCList bulkPrintsStatus = super.getBulkPrintsStatus(statusList);
List<SCItem> bulkPrintStatusItems = bulkPrintsStatus.getItems();
for(SCItem bulkPrintStatusItem : bulkPrintStatusItems) {
if(bulkPrintStatusItem.containsAttribute(BulkPrintService.BULK_PRINT_URL)) {
bulkPrintStatusItem.removeAttribute(BulkPrintService.BULK_PRINT_URL);
String printJobId = bulkPrintStatusItem.getAttribute(BulkPrintService.BULK_PRINT_JOB_ID);
bulkPrintStatusItem.addAttribute(BulkPrintService.BULK_PRINT_URL,
getWebAliasPrintJobUrl(printJobId));
}
}
return bulkPrintsStatus;
}
public SCItem printBulk(String bulkPrintId, MultivaluedMap<String, String> headersMap) throws
Exception {
SCItem printBulkItem = super.printBulk(bulkPrintId, headersMap);
if(printBulkItem.containsAttribute(BulkPrintService.BULK_PRINT_URL)) {
String printJobId = printBulkItem.getAttribute(BulkPrintService.BULK_PRINT_JOB_ID);
printBulkItem.removeAttribute(BulkPrintService.BULK_PRINT_URL);
printBulkItem.addAttribute(BulkPrintService.BULK_PRINT_URL,
getWebAliasPrintJobUrl(printJobId));

return printBulkItem;
} }
private String getWebAliasPrintJobUrl(String printJobId) {
String url = CustomSCEBulkPrintUtility.getWebAliasPrintServerUrl() + "/pdf?id=" + printJobId;
return url;
}
}
CustomSCEBulkPrintUtility.java
package com.custom.sc.sce.util;

import wt.util.WTProperties;

public class CustomSCEBulkPrintUtility {
private static final String WEB_ALIAS_PRINT_SERVICE_URL;

static {
try {
WEB_ALIAS_PRINT_SERVICE_URL =
WTProperties.getLocalProperties().
getProperty(CustomSCEBulkPrintUtility.class.getName() +
".webAliasPrintServiceUrl", "http://localhost:8080/webrest/rest/PrintService");
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}
public static String getWebAliasPrintServerUrl() {
return WEB_ALIAS_PRINT_SERVICE_URL;
}
}
4. Чтобы скомпилировать эти JAVA-классы, выполните следующие шаги:
a. Создайте новую пользовательскую папку в каталоге <WT_HOME>/codebase.war/.
b. Создайте структуру пакета для com.custom.sc.sce.services и com.custom.sc.sce.util.
c. Поместите файл CustomSCEBulkPrintService.java в пакет com.custom.sc.sce.services.
d. Поместите файл CustomSCEBulkPrintUtility.java в пакет com.custom.sc.sce.util.
e. Откройте командную строку и перейдите в папку <WT_HOME>/bin.
f. Запустите оболочку Windchill. При этом откроется оболочка Windchill, необходимая для компиляции JAVA-файлов.
g. Измените папку на <WT_HOME>.
h. Выполните команду javac codebase.war/custom/com/custom/sc/sce/services/CustomSCEBulkPrintService.java.
i. Выполните команду javac codebase.war/custom/com/custom/sc/sce/util/CustomSCEBulkPrintUtility.java.
j. Создайте одинаковую структуру пакета, com/custom/sc/sce/services/ и com/custom/sc/sce/util/, в папке <WT_HOME>/codebase.war/WEB-INF/classes/.
k. Поместите скомпилированные JAVA-классы в соответствующие расположения.
l. Добавьте следующую запись в файл site.xconf:
<Property name="wt.services.service.24440"
targetFile="codebase.war/sc.properties"
default="com.ptc.sc.servicecommon.BulkPrintService
/com.custom.ptc.sc.sce.services.CustomSCEBulkPrintService"
overridable="true"
/>
m. Запустите xconfmanager -pF из оболочки Windchill.
n. Перезапустить Servigistics InService.