[SNMP4J] SNMP4J with Apache Axis2
Lambertus Setiawan Wardana
tazlambert at gmail.com
Wed Mar 4 04:18:29 CET 2009
Hello everyone,
I'm new in SNMP world, and i need some help from you guys to solve the
problem that i have these past few days. I am doing a project about
publishing SNMP protocol to web service by using Apache Web Axis2. The
problem comes when i want to run it. FYI I am using Java as the
language, Eclipse 3.3 as the IDE, Apache 5.5 as the web server and axis2
1.4 as the web service.
This is my workaround with SNMP4J:
package nms;
import java.io.IOException;
import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;
public class SnmpServer {
public String getSnmp(String ip, String oid, String comm, int ver,
long timeout)throws IOException
{
Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
String responseString = null;
CommunityTarget target = new CommunityTarget();
Address targetAddress = GenericAddress.parse("udp:" + ip + "/161");
target.setAddress(targetAddress);
if(ver == 1)
target.setVersion(SnmpConstants.version1);
else if(ver == 3)
target.setVersion(SnmpConstants.version3);
else
target.setVersion(SnmpConstants.version2c);
target.setTimeout(timeout);
if(comm == null)
target.setCommunity(new OctetString("public"));
else
target.setCommunity(new OctetString(comm));
PDU requestPDU = new PDU();
requestPDU.add(new VariableBinding(new OID(oid)));
requestPDU.setType(PDU.GET);
ResponseEvent response = null;
snmp.listen();
response = snmp.send(requestPDU, target);
PDU responsePDU = response.getResponse();
if(responsePDU.getErrorStatus() == 0)
responseString = responsePDU.toString();
else
System.out.println("Error");
if(!(response.getResponse() == null))
System.out.println("Error");
return responseString;
}
}
I'm assuming that there is something wrong with SNMP4J since axis2
stated that:
The SnmpServer service, which is not valid, caused
java.lang.NoClassDefFoundError: org/snmp4j/TransportMapping
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at
org.apache.axis2.description.java2wsdl.DefaultSchemaGenerator.<init>(DefaultSchemaGenerator.java:157)
at
org.apache.axis2.deployment.util.Utils.fillAxisService(Utils.java:524)
at
org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:386)
at
org.apache.axis2.deployment.repository.util.ArchiveReader.buildServiceGroup(ArchiveReader.java:102)
at
org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:179)
at
org.apache.axis2.deployment.ServiceDeployer.deploy(ServiceDeployer.java:81)
at
org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)
at
org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:597)
at
org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144)
at
org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:330)
at
org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:227)
at
org.apache.axis2.deployment.DeploymentEngine.loadServices(DeploymentEngine.java:131)
at
org.apache.axis2.deployment.WarBasedAxisConfigurator.loadServices(WarBasedAxisConfigurator.java:284)
at
org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:82)
at
org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:516)
at
org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:436)
at
org.apache.axis2.transport.http.AxisAdminServlet.init(AxisAdminServlet.java:55)
at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139)
at
org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:966)
at
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3956)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4230)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at
org.apache.catalina.core.StandardService.start(StandardService.java:448)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
[INFO] org.apache.axis2.deployment.DeploymentException:
java.lang.NoClassDefFoundError: org/snmp4j/TransportMapping
It is said that there are no class definition found in the
TransportMapping. Is there somebody that know how to solve this?
I am sorry if I am posting this problem to the wrong mailing list,
don't know where to go :D
Regards,
tazlambert
More information about the SNMP4J
mailing list