Уважаемые БГ-гуру!
Подскажите неспециалисту в яве, что надо дописать в этот код, чтобы избавиться от ошибки?
Вот код (основан на ru.bitel.bgbilling.inet.dyn.device.des3200.DES320028ServiceActivator):
Код:
package ru.bitel.bgbilling.inet.dyn.device.des3000;
import java.util.*;
import java.util.concurrent.*;
import uk.co.westhawk.snmp.pdu.*;
import uk.co.westhawk.snmp.stack.*;
import org.apache.log4j.*;
import ru.bitel.common.*;
import ru.bitel.common.concurrent.*;
import ru.bitel.bgbilling.modules.inet.api.common.bean.*;
import ru.bitel.bgbilling.modules.inet.access.sa.*;
import ru.bitel.bgbilling.server.util.Setup;
public class DES3028ServiceActivator
extends ServiceActivatorAdapter
{
private static final Logger logger = Logger.getLogger( DES3028ServiceActivator.class );
InetDevice device;
String host;
int snmpVersion;
int snmpPort;
SnmpContext context;
// swL2PortCtrlAdminState
long[] oidPortCtrlAdminState = new AsnObjectId( "1.3.6.1.4.1.171.11.63.6.2.2.2.1.3" ).getOid();
@Override
public Object init( Setup setup, int moduleId, InetDevice device, InetDeviceType deviceType, ParameterMap deviceConfig )
{
logger.info( "INIT" );
this.device = device;
this.host = device.getHost();
this.snmpVersion = deviceConfig.getInt( "snmp.version", 1 );
this.snmpPort = deviceConfig.getInt( "snmp.port", 161 );
this.context = null;
return true;
}
@Override
public Object destroy()
{
logger.info( "DESTROY" );
return true;
}
@Override
public Object connect()
throws Exception
{
logger.info( "CONNECT" );
switch( snmpVersion )
{
case 1:
{
this.context = new SnmpContext( host, snmpPort );
break;
}
case 2:
{
this.context = new SnmpContextv2c( host, snmpPort );
break;
}
default:
{
logger.info( "snmpVersion=" + snmpVersion );
return false;
}
}
this.context.setCommunity( device.getSecret() );
return true;
}
@Override
public Object disconnect()
{
logger.info( "DISCONNECT" );
if( context != null )
{
context.destroy();
}
return true;
}
/**
* Set admin state of specified port.
*/
Future<?> setPortCtrlAdminState( int port, int state )
throws Exception
{
logger.info( "SET STATE: " + state );
AsnObjectId oidPortState = new AsnObjectId( oidPortCtrlAdminState );
oidPortState.add( port );
oidPortState.add( "100" );
SetPdu setPdu = new SetPdu( context );
setPdu.addOid( oidPortState, new AsnInteger( state ) );
logger.info( "--1--" );
FutureObserver<?> result = new FutureObserver<Object>()
{
@Override
protected Object updateImpl( Observable obs, Object varbind )
{
SetPdu pdu = (SetPdu)obs;
if( pdu.getErrorStatus() == AsnObject.SNMP_ERR_NOERROR )
{
logger.info( "Ok: " + pdu );
return true;
}
else
{
logger.error( "PDU set error: " + varbind );
}
return false;
}
};
setPdu.addObserver( result );
setPdu.send();
return result;
}
@Override
public Object serviceCreate( ServiceActivatorEvent e )
{
logger.info( "SERVICE CREATE" );
return null;
}
@Override
public Future<?> serviceModify( ServiceActivatorEvent e )
throws Exception
{
logger.info( "SERVICE MODIFY" );
int port = e.getNewInetServ().getInterfaceId();
Set<Integer> optionSet = e.getNewOptions();
int state = 2;
if( e.getNewState() == InetServ.STATE_ENABLE )
{
state = 3;
}
else
{
state = 2;
}
return setPortCtrlAdminState( port, state );
// return null;
}
@Override
public Object serviceCancel( ServiceActivatorEvent e )
{
logger.info( "SERVICE CANCEL" );
return null;
}
@Override
public Object connectionClose( ServiceActivatorEvent event )
throws Exception
{
logger.info( "CONNECTION CLOSE" );
return null;
}
@Override
public Object connectionModify( ServiceActivatorEvent event )
throws Exception
{
logger.info( "CONNECTION MODIFY" );
return null;
}
}
А вот и ошибка:
Код:
mq 12-01/01:54:27 INFO [ActiveMQ Session Task] AbstractEventWorker - Queue size=0
mq 12-01/01:54:27 INFO [ActiveMQ Session Task] AbstractEventWorker - Try schedule task
mq 12-01/01:54:27 INFO [ActiveMQ Session Task] AbstractEventWorker - Schedule task
connection 12-01/01:54:27 INFO [sa-p-7-t-1] ServiceActivatorSet - Connecting to device
connection 12-01/01:54:27 INFO [sa-p-7-t-1] DES3028ServiceActivator - CONNECT
connection 12-01/01:54:27 INFO [sa-p-7-t-1] ServiceActivatorWorkerDevice - Do task deviceId: 11; Event[ru.bitel.bgbilling.modules.inet.access.event.InetSaStateModifyEvent] moduleId: 1; pluginId: 1; cid: -1; scid: -1; userId: 1; deviceId: 11; inetServId: 4; connectionId: 0; state: 1; accessCode: 44; timestamp: 1322682867327
connection 12-01/01:54:27 INFO [sa-p-7-t-1] InetApplication - TariffOptionMap: {}
connection 12-01/01:54:27 INFO [sa-p-7-t-1] ServiceActivatorWorkerDevice - Command result event: ServiceActivatorEvent type=2; inetServId: 4; call: true; oldState: 0; newState: 1; oldOptionSet: ; newOptionSet:
connection 12-01/01:54:27 INFO [sa-p-7-t-1] ServiceActivatorWorkerDevice - Processing deviceId:11; command ServiceActivatorEvent type=2; inetServId: 4; call: true; oldState: 0; newState: 1; oldOptionSet: ; newOptionSet:
connection 12-01/01:54:27 INFO [sa-p-7-t-1] ServiceActivatorSet - Invoking serviceModify
connection 12-01/01:54:27 INFO [sa-p-7-t-1] DES3028ServiceActivator - SERVICE MODIFY
connection 12-01/01:54:27 INFO [sa-p-7-t-1] DES3028ServiceActivator - SET STATE: 3
connection 12-01/01:54:27 INFO [sa-p-7-t-1] DES3028ServiceActivator - --1--
connection 12-01/01:54:27 ERROR [sa-p-7-t-1] ServiceActivatorWorkerDevice - java.lang.NoClassDefFoundError: ru/bitel/bgbilling/inet/dyn/device/des3000/DES3028ServiceActivator$1
ru.bitel.bgbilling.common.BGException: java.lang.NoClassDefFoundError: ru/bitel/bgbilling/inet/dyn/device/des3000/DES3028ServiceActivator$1
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorWorkerDevice.doTask(ServiceActivatorWorkerDevice.java:330)
at ru.bitel.bgbilling.modules.inet.runtime.AsyncEventWorker.doTasks(AsyncEventWorker.java:46)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorWorkerDevice.runWorker(ServiceActivatorWorkerDevice.java:169)
at ru.bitel.bgbilling.modules.inet.runtime.AbstractEventWorker.runImpl(AbstractEventWorker.java:264)
at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:74)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40)
Caused by: java.lang.NoClassDefFoundError: ru/bitel/bgbilling/inet/dyn/device/des3000/DES3028ServiceActivator$1
at ru.bitel.bgbilling.inet.dyn.device.des3000.DES3028ServiceActivator.setPortCtrlAdminState(DES3028ServiceActivator.java:114)
at ru.bitel.bgbilling.inet.dyn.device.des3000.DES3028ServiceActivator.serviceModify(DES3028ServiceActivator.java:167)
at ru.bitel.bgbilling.inet.dyn.device.des3000.DES3028ServiceActivator.serviceModify(DES3028ServiceActivator.java:15)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.serviceModify(ServiceActivatorSet.java:278)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorWorkerDevice.doCommand(ServiceActivatorWorkerDevice.java:347)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorWorkerDevice.doTask(ServiceActivatorWorkerDevice.java:326)
... 13 more
Caused by: java.lang.ClassNotFoundException: ru.bitel.bgbilling.inet.dyn.device.des3000.DES3028ServiceActivator$1
at ru.bitel.bgbilling.kernel.dynamic.server.DatabaseClassLoader.findClass(DatabaseClassLoader.java:44)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 19 more
connection 12-01/01:54:27 INFO [sa-p-7-t-1] ServiceActivatorSet - Disconnecting from device
connection 12-01/01:54:27 INFO [sa-p-7-t-1] DES3028ServiceActivator - DISCONNECT
connection 12-01/01:54:27 ERROR [sa-p-7-t-1] AbstractEventWorker - class ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorWorkerDevice: java.lang.NoClassDefFoundError: ru/bitel/bgbilling/inet/dyn/device/des3000/DES3028ServiceActivator$1
ru.bitel.bgbilling.common.BGException: java.lang.NoClassDefFoundError: ru/bitel/bgbilling/inet/dyn/device/des3000/DES3028ServiceActivator$1
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorWorkerDevice.doTask(ServiceActivatorWorkerDevice.java:330)
at ru.bitel.bgbilling.modules.inet.runtime.AsyncEventWorker.doTasks(AsyncEventWorker.java:46)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorWorkerDevice.runWorker(ServiceActivatorWorkerDevice.java:169)
at ru.bitel.bgbilling.modules.inet.runtime.AbstractEventWorker.runImpl(AbstractEventWorker.java:264)
at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:74)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40)
Caused by: java.lang.NoClassDefFoundError: ru/bitel/bgbilling/inet/dyn/device/des3000/DES3028ServiceActivator$1
at ru.bitel.bgbilling.inet.dyn.device.des3000.DES3028ServiceActivator.setPortCtrlAdminState(DES3028ServiceActivator.java:114)
at ru.bitel.bgbilling.inet.dyn.device.des3000.DES3028ServiceActivator.serviceModify(DES3028ServiceActivator.java:167)
at ru.bitel.bgbilling.inet.dyn.device.des3000.DES3028ServiceActivator.serviceModify(DES3028ServiceActivator.java:15)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.serviceModify(ServiceActivatorSet.java:278)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorWorkerDevice.doCommand(ServiceActivatorWorkerDevice.java:347)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorWorkerDevice.doTask(ServiceActivatorWorkerDevice.java:326)
... 13 more
Caused by: java.lang.ClassNotFoundException: ru.bitel.bgbilling.inet.dyn.device.des3000.DES3028ServiceActivator$1
at ru.bitel.bgbilling.kernel.dynamic.server.DatabaseClassLoader.findClass(DatabaseClassLoader.java:44)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 19 more
connection 12-01/01:54:27 INFO [sa-p-7-t-1] AbstractEventWorker - Execution error - waiting 60000ms for next try.
Этот класс (DES3028ServiceActivator$1.class) после компиляции лежит вместе с DES3028ServiceActivator.class в директории /tmp/ru/bitel/bgbilling/inet/dyn/device/des3000/, но никаких его следов в таблицах script_classes и script_classes_ifaces я не нахожу, хотя DES3028ServiceActivator там есть:
Код:
mysql> select name, last_mod from script_classes;
+-----------------------------------------------------------------------------------+---------------+
| name | last_mod |
+-----------------------------------------------------------------------------------+---------------+
| ru.bitel.bgbilling.inet.dyn.device.des3000.DES3028ServiceActivator | 1322678010000 |
| ru.bitel.bgbilling.inet.dyn.device.des3200.DES320028ServiceActivator | 1322666505000 |
| ru.bitel.bgbilling.inet.dyn.device.isg.ISGLoginGenerator | 1322588919000 |
| ru.bitel.bgbilling.inet.dyn.device.isg.ISGProtocolHandler | 1322666505000 |
| ru.bitel.bgbilling.inet.dyn.device.isg.ISGServiceActivator | 1322666505000 |
| ru.bitel.bgbilling.inet.dyn.device.redback.SmartEdgeProtocolHandler | 1322666505000 |
| ru.bitel.bgbilling.inet.dyn.device.redback.SmartEdgeServiceActivator | 1322666505000 |
| ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusProtocolHandler | 1322666505000 |
| ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusServiceActivator | 1322666505000 |
| ru.bitel.bgbilling.modules.inet.dyn.device.radius.CoAProtocolHandler | 1322666505000 |
| ru.bitel.bgbilling.modules.inet.dyn.device.radius.CoAServiceActivator | 1322666505000 |
| ru.bitel.bgbilling.modules.inet.dyn.device.redback.SmartEdgeClipsProtocolHandler | 1322666505000 |
| ru.bitel.bgbilling.modules.inet.dyn.device.redback.SmartEdgeClipsServiceActivator | 1322666505000 |
+-----------------------------------------------------------------------------------+---------------+
13 rows in set (0.00 sec)
mysql> select * from script_classes_ifaces;
+-----------------------------------------------------------------------------------+----------------------------------------------------------------+
| name | iface |
+-----------------------------------------------------------------------------------+----------------------------------------------------------------+
| ru.bitel.bgbilling.inet.dyn.device.des3000.DES3028ServiceActivator | ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivator |
| ru.bitel.bgbilling.inet.dyn.device.des3200.DES320028ServiceActivator | ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivator |
| ru.bitel.bgbilling.inet.dyn.device.isg.ISGLoginGenerator | ru.bitel.bgbilling.kernel.script.server.dev.EventScript |
| ru.bitel.bgbilling.inet.dyn.device.isg.ISGProtocolHandler | ru.bitel.bgbilling.modules.inet.access.sa.ProtocolHandler |
| ru.bitel.bgbilling.inet.dyn.device.isg.ISGServiceActivator | ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivator |
| ru.bitel.bgbilling.inet.dyn.device.redback.SmartEdgeProtocolHandler | ru.bitel.bgbilling.modules.inet.access.sa.ProtocolHandler |
| ru.bitel.bgbilling.inet.dyn.device.redback.SmartEdgeServiceActivator | ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivator |
| ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusProtocolHandler | ru.bitel.bgbilling.kernel.network.radius.RadiusProtocolHandler |
| ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusProtocolHandler | ru.bitel.bgbilling.modules.inet.access.sa.ProtocolHandler |
| ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusServiceActivator | ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivator |
| ru.bitel.bgbilling.modules.inet.dyn.device.radius.CoAProtocolHandler | ru.bitel.bgbilling.kernel.network.radius.RadiusProtocolHandler |
| ru.bitel.bgbilling.modules.inet.dyn.device.radius.CoAProtocolHandler | ru.bitel.bgbilling.modules.inet.access.sa.ProtocolHandler |
| ru.bitel.bgbilling.modules.inet.dyn.device.radius.CoAServiceActivator | ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivator |
| ru.bitel.bgbilling.modules.inet.dyn.device.redback.SmartEdgeClipsProtocolHandler | ru.bitel.bgbilling.kernel.network.dhcp.DhcpProtocolHandler |
| ru.bitel.bgbilling.modules.inet.dyn.device.redback.SmartEdgeClipsProtocolHandler | ru.bitel.bgbilling.kernel.network.radius.RadiusProtocolHandler |
| ru.bitel.bgbilling.modules.inet.dyn.device.redback.SmartEdgeClipsProtocolHandler | ru.bitel.bgbilling.modules.inet.access.sa.ProtocolHandler |
| ru.bitel.bgbilling.modules.inet.dyn.device.redback.SmartEdgeClipsServiceActivator | ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivator |
+-----------------------------------------------------------------------------------+----------------------------------------------------------------+
17 rows in set (0.00 sec)
Код:
Java Runtime: Sun Microsystems Inc. Java HotSpot(TM) Server VM [1.6.0_29] /usr/java/jdk1.6.0_29/jre
Java endorsed dirs: ./lib/endorsed:/usr/java/default/lib/endorsed
OS: Linux 2.6.35.14-96.fc14.i686 [i386], file.encoding: UTF-8, user.name: root
Heap sizes: current=56064k free=55480k max=233024k
BGBillingServer v 5.2 build 950 from 30.11.2011 17:10:09
assist v.5.2 build 53 from 14.11.2011 16:45:49
bill v.5.2 build 223 from 28.11.2011 19:34:53
bvcom v.5.2 build 33 from 14.11.2011 16:45:51
card v.5.2 build 156 from 28.11.2011 19:35:15
dba v.5.2 build 141 from 14.11.2011 16:45:58
drweb v.5.2 build 49 from 14.11.2011 16:46:00
email v.5.2 build 151 from 14.11.2011 16:46:01
inet v.5.2 build 588 from 30.11.2011 17:18:35
mps v.5.2 build 134 from 14.11.2011 16:46:18
npay v.5.2 build 150 from 28.11.2011 19:35:21
phone v.5.2 build 204 from 14.11.2011 16:46:23
rentsoft v.5.2 build 26 from 14.11.2011 16:46:44
reports v.5.2 build 162 from 14.11.2011 16:46:44
rscm v.5.2 build 145 from 14.11.2011 16:46:45
trayinfo v.5.2 build 140 from 14.11.2011 16:46:45
voiceip v.5.2 build 149 from 14.11.2011 16:47:24
wm v.5.2 build 158 from 14.11.2011 16:47:30
yamoney v.5.2 build 27 from 14.11.2011 16:47:30
buyemoney v.5.2 build 33 from 14.11.2011 16:45:51
hd v.5.2 build 37 from 14.11.2011 16:46:01
license v.5.2 build 43 from 14.11.2011 16:46:17