I can’t seem to properly get my module installed on my server. The correct folders and Application.xml files are all in their proper places.
It works locally. I can run the simulated server through the eclipse debugger and use my app just fine.
However, when attempt to move it to my actual EC2 instance (that is, the officially-provided AMI available here), it breaks in one of two ways:
-
No error message on the server or the client. The client simply hangs trying to connect.
-
This error message appears on the server
loadModFunctions[recorder/_definst_]: Module class not found or could not be loaded. Check [install-dir]/conf/recorder/Application.xml to be sure all Modules/Module/Class paths are correct: name:RecorderModule class:com.xxxxxxxxx.recorder.RecorderModules
The client can connect and publish streams, but it cannot use any of the functionality contained in the module.
I can produce problem #1 when I just copy my .jar file over and put it in the lib folder. I think my problem here is similar to the one in this thread.
So I, based on that, I tried to combine my dependencies in with my .jar, and all attempts so far led to error message #2. I even attempted to edit my META-INF/MANIFEST.MF file of the combined .jar to include the “Main-Class” of my application as it is in the debug settings of Eclipse, which is “com.wowza.wms.bootstrap.Bootstrap”, but that didn’t help.
I’ve tried to use both a Runnable Jar file and a regular Jar archive through Eclipse, but I was not able to get my module working on my server.
So how am I supposed to do this?
Hi,
Let’s continue to work through the ticket that you have opened with support.
For reference this is Ticket # 104695
Daren
Thank you for updating the thread.
Matt
I hope you do not resent me getting help from the community during your off hours
When it breaks in way #1, I get this error:
Exception in thread "ServerHandler.12" java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentialsProvider
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at com.wowza.wms.util.ModuleUtils.addModuleToApp(ModuleUtils.java:32)
at com.wowza.wms.util.ApplicationUtils.a(ApplicationUtils.java:183)
at com.wowza.wms.util.ApplicationUtils.loadConfigFile(ApplicationUtils.java:321)
at com.wowza.wms.application.ApplicationInstance.a(ApplicationInstance.java:646)
at com.wowza.wms.application.ApplicationInstance.<init>(ApplicationInstance.java:269)
at com.wowza.wms.application.Application.getAppInstance(Application.java:569)
at com.wowza.wms.module.ModuleConnect.connect(ModuleConnect.java:1072)
at com.wowza.wms.request.RequestProcessFunctions.processFunctions(RequestProcessFunctions.java:89)
at com.wowza.wms.request.RequestProcessData.flushFunction(RequestProcessData.java:58)
at com.wowza.wms.request.RequestProcessData.processNextRequest(RequestProcessData.java:852)
at com.wowza.wms.request.RTMPRequestAdapter.service(RTMPRequestAdapter.java:570)
at com.wowza.wms.server.ServerHandler.a(ServerHandler.java:653)
at com.wowza.wms.server.ServerHandler.a(ServerHandler.java:375)
at com.wowza.wms.server.ServerHandler.messageReceived(ServerHandler.java:487)
at com.wowza.wms.server.ServerHandlerThreadedSession.run(ServerHandlerThreadedSession.java:108)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.AWSCredentialsProvider
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 31 more
I resolved it by installing everything differently on a new server.
I took by auto-generated .jar file, and the two jar files that it depended on, commons-codec-1.9 and aws-java-sdk-1.4.7, and installed them using the “startup package” method.
And everything worked fine.