Hello Clement,
thnaks a lot for the quick answer.
When I set the LogServervice to optional and reinstall the module, I get
the following log error meeesage during "start":
2014-01-06 15:19:34,517 | ERROR | pool-1-thread-1 |
server | ? ?
| 96 - server - 1.0.0.SNAPSHOT | [ERROR] :
[de.hermannmatthes.workbench.server.ServerImpl-0] createInstance -> The
POJO constructor invocation failed : Expecting a stackmap frame at
branch target 12 in method
de.hermannmatthes.workbench.server.ServerImpl.start()V at offset 4
java.lang.VerifyError: Expecting a stackmap frame at branch target 12 in
method de.hermannmatthes.workbench.server.ServerImpl.start()V at offset 4
at java.lang.Class.getDeclaredConstructors0(Native Method)[:1.7.0_07]
at
java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)[:1.7.0_07]
at java.lang.Class.getConstructor0(Class.java:2714)[:1.7.0_07]
at java.lang.Class.getDeclaredConstructor(Class.java:2002)[:1.7.0_07]
at
org.apache.felix.ipojo.InstanceManager.createObject(InstanceManager.java:715)[84:org.apache.felix.ipojo:1.11.0]
at
org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:923)[84:org.apache.felix.ipojo:1.11.0]
at
org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__M_stateChanged(LifecycleCallbackHandler.java:156)[84:org.apache.felix.ipojo:1.11.0]
at
org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java)[84:org.apache.felix.ipojo:1.11.0]
at
org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:536)[84:org.apache.felix.ipojo:1.11.0]
at
org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:418)[84:org.apache.felix.ipojo:1.11.0]
at
org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:179)[84:org.apache.felix.ipojo:1.11.0]
at
org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:319)[84:org.apache.felix.ipojo:1.11.0]
at
org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:240)[84:org.apache.felix.ipojo:1.11.0]
at
org.apache.felix.ipojo.extender.internal.linker.ManagedType$InstanceSupport$1.call(ManagedType.java:312)[84:org.apache.felix.ipojo:1.11.0]
at
org.apache.felix.ipojo.extender.internal.linker.ManagedType$InstanceSupport$1.call(ManagedType.java:306)[84:org.apache.felix.ipojo:1.11.0]
at
org.apache.felix.ipojo.extender.internal.queue.JobInfoCallable.call(JobInfoCallable.java:114)[84:org.apache.felix.ipojo:1.11.0]
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)[:1.7.0_07]
at java.util.concurrent.FutureTask.run(FutureTask.java:166)[:1.7.0_07]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)[:1.7.0_07]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)[:1.7.0_07]
at java.lang.Thread.run(Thread.java:722)[:1.7.0_07]
2014-01-06 15:19:34,517 | ERROR | pool-1-thread-1 |
server | ? ?
| 96 - server - 1.0.0.SNAPSHOT | [ERROR]
de.hermannmatthes.workbench.server.ServerImpl : Cannot create a POJO
instance, the POJO constructor invocation has thrown an exception
Does anybody know what's the reason for that error?
Hermann
Am 06.01.2014 07:42, schrieb Clement Escoffier:
Hi,
On 5 janv. 2014, at 20:07, Hermann Matthes <[email protected]> wrote:
Hello everybody,
I try to learn ipojo to implement a simple server using Netbeans 7.4 and Apache
Karaf.
My first goal is to write a really simple server which just prints a message
when it's activated or deactivated. No tutorial which I found gave enough
information to perform such a simple task.
Here's my code:
The server interface:
package de.hermannmatthes.workbench.server;
public interface Server {
public void start();
public void stop();
}
The server implementation:
package de.hermannmatthes.workbench.server;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.felix.ipojo.annotations.Component;
import org.apache.felix.ipojo.annotations.Instantiate;
import org.apache.felix.ipojo.annotations.Invalidate;
import org.apache.felix.ipojo.annotations.Requires;
import org.apache.felix.ipojo.annotations.Validate;
import org.osgi.service.log.LogService;
@Component(immediate=true)
@Instantiate
public class ServerImpl implements Server {
@Requires(policy="static")
private LogService log;
@Override
@Validate
public void start() {
trace("Starting workbench server, log is " + log);
log.log(LogService.LOG_INFO, "Starting workbench server.");
}
@Override
@Invalidate
public void stop() {
trace("Stopping workbench server, log is " + log);
log.log(LogService.LOG_INFO, "Stopping workbench server.");
}
private void trace(final String msg) {
FileWriter w = null;
try {
w = new FileWriter("C:/temp/test.log", true);
w.write(msg + "\n");
} catch (IOException ex) {
Logger.getLogger(ServerImpl.class.getName()).log(Level.SEVERE,
null, ex);
}
finally {
if (w!=null) {
try {
w.close();
} catch (IOException ex) {
Logger.getLogger(ServerImpl.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
If I install the module in karaf and resolve it, everything's fine. But when I
start it, its state changes to Active but nothing happens. In the attachment
you find my project file.
Can someone tell me whats wrong with my code?
Is the log service available ? Try to set it ‘optional’ (optional=true).
Regards,
Clement
Any hint is welcome
Hermann
<pom.xml>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]