You should update the iPOJO Maven Plugin to latest version (1.12.1), the
one you are using is really (really) old.

Cheers,

Clement

2015-02-16 16:42 GMT+01:00 Ascharya Shetty <[email protected]>:

> I tried but with no luck. I am just wondering if I have configured the
> maven files correctly.
> I get the following exception:
> createInstance -> The POJO constructor invocation failed : Expecting a
> stackmap frame at branch target 22
> Exception Details:
>   Location:
>
>
> com/test/component/service/MyServlet.__doGet(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V
> @8: aload_2
>   Reason:
>     Expected stackmap frame at this location.
>   Bytecode:
>     0000000: b200 8912 8bb6 0090 2cb9 0096 0100 1298
>     0000010: b600 9ba7 0008 4e2d b600 9cb1
>   Exception Handler Table:
>     bci [8, 19] => handler: 22
>
> java.lang.VerifyError: Expecting a stackmap frame at branch target 22
> Exception Details:
>   Location:
>
>
> com/test/component/service/MyServlet.__doGet(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V
> @8: aload_2
>   Reason:
>     Expected stackmap frame at this location.
>   Bytecode:
>     0000000: b200 8912 8bb6 0090 2cb9 0096 0100 1298
>     0000010: b600 9ba7 0008 4e2d b600 9cb1
>   Exception Handler Table:
>     bci [8, 19] => handler: 22
>
> at java.lang.Class.getDeclaredConstructors0(Native Method)
> at java.lang.Class.privateGetDeclaredConstructors(Class.java:2585)
> at java.lang.Class.getConstructor0(Class.java:2885)
> at java.lang.Class.getDeclaredConstructor(Class.java:2058)
> at
>
> org.apache.felix.ipojo.InstanceManager.createObject(InstanceManager.java:746)
> at
>
> org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:963)
> at
>
> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__M_stateChanged(LifecycleCallbackHandler.java:156)
> at
>
> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java)
> at
> org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:560)
> at org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:440)
> at
>
> org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:179)
> at
>
> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:319)
> at
>
> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:240)
> at
>
> org.apache.felix.ipojo.extender.internal.linker.ManagedType$InstanceSupport$1.call(ManagedType.java:312)
> at
>
> org.apache.felix.ipojo.extender.internal.linker.ManagedType$InstanceSupport$1.call(ManagedType.java:306)
> at
>
> org.apache.felix.ipojo.extender.internal.queue.JobInfoCallable.call(JobInfoCallable.java:114)
> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> 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)
> [ERROR] com.test.component.service.MyServlet : Cannot create a POJO
> instance, the POJO constructor invocation has thrown an exception
>
> so this is how my servlet looks :
> import java.io.IOException;
>
> import javax.servlet.ServletException;
> import javax.servlet.http.HttpServlet;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
>
> import org.apache.felix.ipojo.annotations.Bind;
> import org.apache.felix.ipojo.annotations.Component;
> import org.apache.felix.ipojo.annotations.Instantiate;
> import org.apache.felix.ipojo.annotations.ServiceProperty;
> import org.apache.felix.ipojo.annotations.Unbind;
> import org.osgi.service.http.HttpService;
> import org.osgi.service.http.NamespaceException;
>
> @Component(immediate = true)
> @Instantiate
> @Provides
> public class MyServlet extends HttpServlet {
> @ServiceProperty
> private String SERVLET_ALIAS = "/hello";
>
> @Bind
> public void bindHttp(HttpService httpService) {
> try {
> httpService.registerServlet(SERVLET_ALIAS, this, null, null);
> } catch (ServletException | NamespaceException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
>
> @Unbind
> public void unbindHttp(HttpService httpService) {
> httpService.unregister(SERVLET_ALIAS);
> }
>
> @Override
> public void doGet(HttpServletRequest request, HttpServletResponse response)
> {
> System.out.println("Hello");
> try {
> response.getWriter().println("Hello World!");
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
>
> }
>
>
> Maven file :
> Just the plugin portion:
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-compiler-plugin</artifactId>
> <version>3.1</version>
> <configuration>
> <source>1.7</source>
> <target>1.7</target>
> </configuration>
> </plugin>
>
> <plugin>
> <groupId>org.apache.felix</groupId>
> <artifactId>maven-ipojo-plugin</artifactId>
> <version>1.6.0</version>
> <executions>
> <execution>
> <goals>
> <goal>ipojo-bundle</goal>
> </goals>
> </execution>
> </executions>
> </plugin>
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-compiler-plugin</artifactId>
> <configuration>
> <source>1.7</source>
> <target>1.7</target>
> </configuration>
> </plugin>
> <plugin>
> <groupId>org.apache.felix</groupId>
> <artifactId>maven-bundle-plugin</artifactId>
> <extensions>true</extensions>
> <configuration>
> <instructions>
> <Import-Package>
> javax.crypto.*; javax.crypto.spec.*; javax.jms.*;
> javax.mail.*;
> javax.mail.internet.*; javax.naming.*;
> javax.naming.directory.*;
> javax.naming.ldap.*; javax.net.*;
> javax.net.ssl.*;
> javax.security.auth.x500.*; javax.servlet.*;
> javax.sql.*;javax.ws.rs.*;com.sun.jersey.api.core;
> com.sun.jersey.spi.container.servlet;
> org.osgi.*; resolution:=optional
> </Import-Package>
> <Embed-Dependency>httpclient; httpcore; gson; commons-logging;
> log4j;</Embed-Dependency>
> </instructions>
> </configuration>
> </plugin>
>
>
>
>
> On Sat, Feb 14, 2015 at 1:35 PM, Clement Escoffier <
> [email protected]> wrote:
>
> > Hi,
> >
> > Oh, you are not using the whiteboard pattern, so the code should be
> > something like:
> >
> > @Component(immediate=true)
> > @Instantiate
> > public class MyServlet extends HttpServlet {
> >
> > @Bind
> > public void bindHttp(HttpService svc) {
> >     svc.registerServlet(alias, this, null, null);
> > }
> >
> > @Unbind
> > public void unbindHttp(HttpService svc) {
> >     svc.unregisterServlet(alias);
> > }
> >
> > }
> >
> > Cheers,
> >
> > Clement
> >
> >
> > On 13 fĂ©vrier 2015 at 17:04:53, Ascharya Shetty ([email protected])
> > wrote:
> >
> > Thanks. I agree with David. There is something more than just the three
> > annotations which Clement has mentioned.
> > My servlet looks like this :
> >
> > package com.test.ipojo.example;
> > @Component(immediate=true)
> > //provides a service
> > @Instantiate
> > @Provides(specifications={HttpServlet.class})
> > public class MyServlet extends HttpServlet{
> > @ServiceProperty(name="alias", value="/hello")
> > private String alias ;
> > public MyServlet(@Requires HttpService httpService) throws
> > ServletException, NamespaceException{
> > httpService.registerServlet(alias,this, null, null);
> > }
> > public void doGet(HttpServletRequest request, HttpServletResponse
> > response){
> > System.out.println("Hello");
> > try {
> > response.getWriter().println("Hello World!");
> > } catch (IOException e) {
> > // TODO Auto-generated catch block
> > e.printStackTrace();
> > }
> > }
> > }
> > Also, i am not very sure if I am configuring the maven build plugin the
> > right way:(ignore the other irrelevant packages.)
> > <plugin>
> > <groupId>org.apache.felix</groupId>
> > <artifactId>maven-bundle-plugin</artifactId>
> > <extensions>true</extensions>
> > <configuration>
> > <instructions>
> > <Export-Package>
> > com.test.ipojo.example
> > </Export-Package>
> > <Import-Package>
> > javax.crypto.*; javax.crypto.spec.*; javax.jms.*;
> > javax.mail.*;
> > javax.mail.internet.*; javax.naming.*;
> > javax.naming.directory.*;
> > javax.naming.ldap.*; javax.net.*;
> > javax.net.ssl.*;
> > javax.security.auth.x500.*; javax.servlet.*;
> > javax.sql.*;
> > org.osgi.*; resolution:=optional
> > </Import-Package>
> > <Embed-Dependency>httpclient; httpcore; gson; commons-logging;
> > log4j;</Embed-Dependency>
> > </instructions>
> > </configuration>
> > </plugin>
> >
> >
> > On Fri, Feb 13, 2015 at 10:06 AM, David Bosschaert <
> > [email protected]> wrote:
> >
> > > I guess if you want a servlet registered in the service registry this
> > > is typically to have it picked up by something like the Http
> > > Whiteboard implementation. For that you cannot register it under
> > > HttpServlet but it has to be registered as a javax.servlet.Servlet.
> > > I'm not familiar with the iPojo annotations, but I guess the above
> > > example would need to be tweaked in such a case...
> > >
> > > Cheers,
> > >
> > > David
> > >
> > > On 13 February 2015 at 15:58, clement escoffier
> > > <[email protected]> wrote:
> > > > Hi,
> > > >
> > > > If you just want to register your service just do this:
> > > >
> > > > @Component
> > > > @Provides
> > > > @Instantiate
> > > > public class MyServlet extends HttpServlet {
> > > > ...
> > > > }
> > > >
> > > > @Component declares a component type, @Provides tells to iPOJO that
> > your
> > > > component is providing a service, and @Instantiate create an instance
> > of
> > > > this component.
> > > >
> > > > Cheers,
> > > >
> > > > Clement
> > > >
> > > >
> > > > 2015-02-13 15:43 GMT+01:00 Ascharya Shetty <[email protected]>:
> > > >
> > > >> I have been struggling to use the right brew of annotations to get
> the
> > > >> servlet registered as a service using iPojo.Please let me know how
> can
> > > I do
> > > >> this?
> > > >> Thanks
> > > >> Ascharya
> > > >>
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [email protected]
> > > For additional commands, e-mail: [email protected]
> > >
> > >
> >
>

Reply via email to