Писал глобальный скрипт, сохранил, закрыл вкладку с глобальными скриптами. Сегодня открываю - скрипт не открывается. Остальные открываются нормально.
Клиент ругается: "Ошибка соединения с сервером".
Версия:
Код:
Клиент: вер. 5.1 сборка 552 от 21.06.2011 13:29:36
os:Windows XP; java:Sun Microsystems Inc., v.1.6.0_16
Сервер: вер. 5.1 сборка 673 от 21.06.2011 13:29:08
os:Linux; java:Sun Microsystems Inc., v.1.6.0_22
В дебаге клиента:
Код:
http://192.168.0.101:8080/bgbilling/executer?id=35&module=script.global&action=GetGlobalScript&BGBillingSecret=lqwAHClXFosZPUKBAFZqVw09&
[ length = 0 ] xml =
[Fatal Error] :-1:-1: Premature end of file.
В server.error.log ошибка:
Код:
server 06-24/09:50:15 ERROR [http-8080-7] server - Exception in Executer (ActionGetGlobalScript)
java.io.IOException: The character ' is an invalid XML character
at org.apache.xml.serialize.BaseMarkupSerializer.fatalError(Unknown Source)
at org.apache.xml.serialize.BaseMarkupSerializer.surrogates(Unknown Source)
at org.apache.xml.serialize.XMLSerializer.printEscaped(Unknown Source)
at org.apache.xml.serialize.XMLSerializer.printAttribute(Unknown Source)
at org.apache.xml.serialize.XMLSerializer.serializeElement(Unknown Source)
at org.apache.xml.serialize.BaseMarkupSerializer.serializeNode(Unknown Source)
at org.apache.xml.serialize.XMLSerializer.serializeElement(Unknown Source)
at org.apache.xml.serialize.BaseMarkupSerializer.serializeNode(Unknown Source)
at org.apache.xml.serialize.BaseMarkupSerializer.serialize(Unknown Source)
at bitel.billing.server.Executer.A(Unknown Source)
at bitel.billing.server.Executer.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:49)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)
Текст скрипта (взял из базы):
Код:
import java.io.IOException;
import org.apache.log4j.*;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import java.net.InetAddress;
/*
import org.snmp4j.CommunityTarget;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.PDU;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.Integ ППр8@ђ[‰ org.snmp4j.smi.Null;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.UdpAddress;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.Snmp;
import org.snmp4j.transport.DefaultUdpTransportMapping;
import org.snmp4j.TransportMapping;
*/
import ru.dsi.bgbilling.common.snmp.SNMPInterfaceManager;
import ru.dsi.bgbilling.common.snmp.SNMPInterfaceManager.IfaceData;
import ru.bitel.bgbilling.modules.ipn.common.bean.*;
import java.sql.*;
import bitel.billing.server.dialup.bean.*;
import bitel.billing.server.call.bean.*;
import java.util.*;
import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.bean.ContractServiceManager;
import bitel.billing.server.contract.bean.ContractService;
import bitel.billing.server.service.bean.ModuleAndServiceManager;
import bitel.billing.server.dialup.bean.DialUpLoginManager;
public void main(setup, con, conSlave )
{
/* includeBGBS("bgbs://ru.bitel.bgbilling.kernel.script.common.bean.ScriptLibrary/some_utils");
SomeUtils.sync(172426, con);
*/
SNMPInterfaceManager snmp = new SNMPInterfaceManager();
bitel.billing.server.load.bean.SourceManager sm = new bitel.billing.server.load.bean.SourceManager(con);
AddressRangeManager arm = new AddressRangeManager(con, 9);
bitel.billing.server.ipn.bean.RangeIfaceManager rangeifman = new bitel.billing.server.ipn.bean.RangeIfaceManager(con, 9);
bitel.billing.server.ipn.bean.IfaceManager ifman = new bitel.billing.server.ipn.bean.IfaceManager(con, 9);
List ranges = arm.getAddressRangeList(java.util.Calendar.getInstance());
int i=100;
for(AddressRange range : ranges){
if(range.getAddr1()<=1){continue;}
int plan = range.getPlanId();
if(plan==0 || plan==1 || plan==6 || plan==122 || plan==237){
Set rangeifaces = rangeifman.getAdressRangeIfaces(range.getID());
for(bitel.billing.server.ipn.bean.RangeIface rangeiface : rangeifaces){
bitel.billing.server.ipn.bean.Iface iface = ifman.getIface(rangeiface.getSourceId(), rangeiface.getIfaceId());
bitel.billing.server.load.bean.Source source = sm.getSource(rangeiface.getSourceId());
try{
IfaceData ifData = snmp.getIfDataByIpForNas(InetAddress.getByName(source.getHostOrDir()), InetAddress.getByName(bitel.billing.common.IPUtils.convertLongIpToString(range.getAddr1())), 161, "public");
if(ifData!=null){
print(range.getContractID()+":"+range.toString()+":\t\t\t ifName="+ifData.ifName+"\t\t\t(bg: "+iface.getNumber()+")");
}else{
print(range.getContractID()+":"+range.toString()+": null");
}
}catch(e){
print(range.getContractID()+":"+range+" : "+e);
}
}
i--;
if(i<=0){return;}
}
}
/* SNMPInterfaceManager sm = new SNMPInterfaceManager();
IfaceData ifData = sm.getIfDataByIpForNas(InetAddress.getByName("10.0.0.40"), InetAddress.getByName("192.168.1.101"), 161, "public");
print(ifData.ifIndex);
print(ifData.ifName);
print(ifData.maskLength);*/
}
(пароли и ip изменены, все совпадения считать случайными

)
(предваряя вопросы - тестовый скрипт, тестирую получение имён интерфейсов по ip через SNMP)