[JSF] Problem z zewnętrzną biblioteką SNMP4J

0

Witam,

Jeśli kogoś obrażę banalnym problemem to przepraszam. Jestem początkujący w JSF i swój program pisze w oparciu o tutoriale.

W celu sprawdzenia czy projekt dobrze działa napisałem prosty programik który wyświetli tylko napis na stronie:

  • TestClass

@ManagedBean
public class TestClass {
	
	private String testMessage;
	
	public String getTestMessaget() {
	    return(testMessage);
	}

	public void setTestMessaget(String testMessage) {
	    this.testMessage = testMessage;
	}
	
	public String showTest() throws IOException {
		setTestMessaget(TmpClass.getText());
	    return("reply_test");
	}
}

  • TmpClass
public class TmpClass {
	
	public static String getText() throws IOException {
		return "jakis tekst";
	}
}
  • reply_test.xhtml
......
<table border="5" align="center">
    <tr><th class="title">Twój test</th></tr>
</table>

<p/>
    <img src="./images/money.gif" align="left" hspace="20"/>
    <ul>
        <li>Test message: #{testClass.testMessaget}</li>
    </ul>  
</h:body>
</html>

I ten fragment kodu działa poprawnie. Jest prosty i trywialny. Problem pojawia się wtedy, kiedy w metodzie getText() chciałbym pobrać jakąś wartość String przez SNMP i ją zwrócić. W poniższym przykładzie przygotowuje jedynie szkielet do połączenia. Nie pobieram jeszcze wartości i zwracam jakiegoś fakowego Stringa.

public class TmpClass {

	public static Snmp snmp;
	
	public static String getText() throws IOException {
		TransportMapping transport = new DefaultUdpTransportMapping();
		snmp = new Snmp(transport);
		transport.listen();
		snmp.close();
		return "jakis tekst";
	}
}

Metoda wywala się na konstruktorze DefaultUdpTransportMapping z nastepującym Exceptionem

java.lang.NoClassDefFoundError: org/snmp4j/TransportMapping

-Stack Trace
javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: org/snmp4j/TransportMapping
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	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.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:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: org/snmp4j/TransportMapping
	at snmp4j.TestClass.showTest(TestClass.java:21)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 20 more
Caused by: java.lang.ClassNotFoundException: org.snmp4j.TransportMapping
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	... 29 more

Dodam tylko, że fragment kodu z łączeniem się i pobieraniem wartości przez SNMP działa i był sprawdzany pod wiersza poleceń. Zależy mi jednak na napisaniu aplikacji webowej, która będzie wstanie wykonywać takie zadania. Czy mogę liczyć na pomoc w zlokalizowaniu błędu? Jak mam to ugryźć?

Pozdrawiam

0

Czy biblioteka SNMP4J jest dołączona do aplikacji? To jedyne co mi przychodzi do głowy jeżeli podobna aplikacja działa w konsoli.

0

Tak. Jest dołączona. Dlatego tym bardziej nie wiem o co chodzi :(

0

Komunikat prosty i czytelny nie ma takiej klasy na classpathu kontenera ktorego uzywasz.
Jak nie wierzy to wypisz sobie classpatha

0

Moje pytanie będzie głupie ale w tej sytuacji jak mogę rozwiązać problem? Proszę o przykład.

Pozdrawiam

0

Może spróbuj, jak sugeruje Szczery, dołączyć bibliotekę nie do aplikacji a do kontenera/serwera na którym ją uruchamiasz. Ja myślałem, że jest to równoważne ale widocznie nie w przypadku wszystkich bibliotek.

0

Sorki za problem :) Załapałem o co chodzi i do WEB-INF dodałem bibliotekę SNMP4J :-) Działa tak jak powinno :) A dowód na to: komunikat SNMP wyświetlany w aplikacji webowej po stronie klienta :-)

Test message: RESPONSE[requestID=603518732, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.1.1.0 = Cisco IOS Software, 2800 Software (C2800NM-IPBASE-M), Version 12.4(3d), RELEASE SOFTWARE (fc3) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2006 by Cisco Systems, Inc. Compiled Wed 19-Apr-06 09:18 by alnguyen]]

Dzięki za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1