[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