You are aware that Servlet Filters are also supported by the whiteboard? See 
https://osgi.org/specification/osgi.cmpn/7.0.0/service.http.whiteboard.html#d0e121055
 
<https://osgi.org/specification/osgi.cmpn/7.0.0/service.http.whiteboard.html#d0e121055>

Just to reiterate my warning, continuing to develop a WAB will significantly 
affect your ability to reliably take advantage of OSGi specifications and 
services from your web code going forward. If you do have more problems then 
you will likely find that the future advice from this list is that you should 
migrate away from using a WAB.

Best Regards,

Tim

> On 7 Aug 2018, at 16:12, Nhut Thai Le <[email protected]> wrote:
> 
> Thanks Tim,
> 
> I'll stick with the WAB for now and use the BundleContext to get my service 
> since I need to config some security filter on the web.xml.
> 
> Thai
> 
> On Tue, Aug 7, 2018 at 4:15 AM, Tim Ward <[email protected] 
> <mailto:[email protected]>> wrote:
> Hi,
> 
> I’m afraid that if you’re using a WAB file then you absolutely can’t use DS, 
> and vice versa. The Web Application Bundle specification exists as a 
> mechanism to allow people to move from a non-OSGi world into OSGi, and there 
> are a number of restrictions as a result. The one that you’re hitting is that 
> in a Web Application the Servlet container is responsible for instantiating 
> and managing the lifecycle of the Servlet instances. As a result you are 
> getting two instances created, one by DS which is injecting the AdminBroker 
> service, and one by the Servlet Container which isn’t injecting anything.
> 
> Assuming that this is a new project then by far the simplest way to fix this 
> is to completely avoid making a WAB, and just to use the Http Whiteboard. 
> This will simplify things immensely, and handle the service dynamics easily. 
> If you can’t avoid using the WAB then you do have access to the BundleContext 
> in your ServletContext (see 
> https://osgi.org/specification/osgi.cmpn/7.0.0/service.war.html#d0e101441 
> <https://osgi.org/specification/osgi.cmpn/7.0.0/service.war.html#d0e101441>). 
> You would have to use this to get the service you want to use (and release 
> it, and deal with what happens if it isn’t available).
> 
> In summary, WABs exist for specific use cases when you can’t be properly 
> modular, or for when you have to work both inside and outside OSGi. It’s not 
> recommended to use them as your first development option.
> 
> I wish you luck with your experiments!
> 
> Best Regards,
> 
> Tim
> 
>> On 6 Aug 2018, at 22:10, Nhut Thai Le <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> Hi Tim,
>> 
>> The servlet is inside a WAB file which has a web.xml:
>> 
>> <?xml version="1.0" encoding="UTF-8"?>
>> <web-app xmlns="http://java.sun.com/xml/ns/javaee 
>> <http://java.sun.com/xml/ns/javaee>"
>>          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance 
>> <http://www.w3.org/2001/XMLSchema-instance>"
>>          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
>> <http://java.sun.com/xml/ns/javaee> 
>> http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd 
>> <http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd>"
>>          version="3.0">
>>      <servlet>
>>              <servlet-name>HelloWorld</servlet-name>
>>              <servlet-class>com.webapp.HelloWorld</servlet-class>
>>      </servlet>
>> 
>>      <servlet-mapping>
>>              <servlet-name>HelloWorld</servlet-name>
>>              <url-pattern>/</url-pattern>
>>      </servlet-mapping>
>> </web-app>
>> 
>> I'm not trying to use the whiteboard pattern in the first place but rather 
>> looking for a way to inject my AdminBroker service into my servlet so I turn 
>> my servlet into a component in order to use the reference.
>> 
>> Thai
>> 
>> 
>> On Mon, Aug 6, 2018 at 4:44 PM, Tim Ward <[email protected] 
>> <mailto:[email protected]>> wrote:
>> I don’t see any Http Service whiteboard properties on the Servlet component. 
>> How are you registering it with the Servlet container?
>> 
>> Tim
>> 
>> Sent from my iPhone
>> 
>> On 6 Aug 2018, at 16:22, Nhut Thai Le via osgi-dev <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>>> Hello,
>>> 
>>> I have a servlet defined like this:
>>> 
>>> @Component(service = Servlet.class)
>>> public class HelloWorld extends HttpServlet {
>>>     @Reference(cardinality = ReferenceCardinality.MANDATORY)
>>>     private AdminBroker adminBroker;
>>> 
>>>     protected void doGet(HttpServletRequest request, HttpServletResponse 
>>> response) throws ServletException, IOException {   
>>>             adminBroker.doSomething();
>>>     }
>>> }
>>> 
>>> My AdminBroker implementation looks like:
>>> @Component(service=AdminBroker.class)
>>> public class AdminBrokerImpl implements AdminBroker {
>>>     @Activate
>>>     private void init() {
>>>             String param1 = "some text";
>>>     }
>>> }
>>> 
>>> When I started the env (felix 6 with pax-web), I can see the AdminBroker 
>>> instantiated (hit a break point in the init of my AdminBroker 
>>> implementation) but when the web request arrives and the doGet method is 
>>> called, the adminBroker is null.
>>> 
>>> Does anyone have an idea what may go wrong here?
>>> 
>>> Thai Le
>>> 
>>> -- 
>>> Castor Technologies Inc
>>> 460 rue St-Catherine St 
>>> <https://maps.google.com/?q=460+rue+St-Catherine+St&entry=gmail&source=g> 
>>> Ouest, Suite 613 
>>> Montréal, Québec H3B-1A7
>>> (514) 360-7208 o
>>> (514) 798-2044 f
>>> [email protected] <mailto:[email protected]>
>>> www.castortech.com <http://www.castortech.com/> 
>>> 
>>> CONFIDENTIALITY NOTICE: The information contained in this e-mail is 
>>> confidential and may be proprietary information intended only for the use 
>>> of the individual or entity to whom it is addressed. If the reader of this 
>>> message is not the intended recipient, you are hereby notified that any 
>>> viewing, dissemination, distribution, disclosure, copy or use of the 
>>> information contained in this e-mail message is strictly prohibited. If you 
>>> have received and/or are viewing this e-mail in error, please immediately 
>>> notify the sender by reply e-mail, and delete it from your system without 
>>> reading, forwarding, copying or saving in any manner. Thank you.
>>> AVIS DE CONFIDENTIALITE: L’information contenue dans ce message est 
>>> confidentiel, peut être protégé par le secret professionnel et est réservé 
>>> à l'usage exclusif du destinataire. Toute autre personne est par les 
>>> présentes avisée qu'il lui est strictement interdit de diffuser, distribuer 
>>> ou reproduire ce message. Si vous avez reçu cette communication par erreur, 
>>> veuillez la détruire immédiatement et en aviser l'expéditeur. Merci.
>>> _______________________________________________
>>> OSGi Developer Mail List
>>> [email protected] <mailto:[email protected]>
>>> https://mail.osgi.org/mailman/listinfo/osgi-dev 
>>> <https://mail.osgi.org/mailman/listinfo/osgi-dev>
>> 
>> 
>> -- 
>> Castor Technologies Inc
>> 460 rue St-Catherine St 
>> <https://maps.google.com/?q=460+rue+St-Catherine+St&entry=gmail&source=g> 
>> Ouest, Suite 613 
>> Montréal, Québec H3B-1A7
>> (514) 360-7208 o
>> (514) 798-2044 f
>> [email protected] <mailto:[email protected]>
>> www.castortech.com <http://www.castortech.com/> 
>> 
>> CONFIDENTIALITY NOTICE: The information contained in this e-mail is 
>> confidential and may be proprietary information intended only for the use of 
>> the individual or entity to whom it is addressed. If the reader of this 
>> message is not the intended recipient, you are hereby notified that any 
>> viewing, dissemination, distribution, disclosure, copy or use of the 
>> information contained in this e-mail message is strictly prohibited. If you 
>> have received and/or are viewing this e-mail in error, please immediately 
>> notify the sender by reply e-mail, and delete it from your system without 
>> reading, forwarding, copying or saving in any manner. Thank you.
>> AVIS DE CONFIDENTIALITE: L’information contenue dans ce message est 
>> confidentiel, peut être protégé par le secret professionnel et est réservé à 
>> l'usage exclusif du destinataire. Toute autre personne est par les présentes 
>> avisée qu'il lui est strictement interdit de diffuser, distribuer ou 
>> reproduire ce message. Si vous avez reçu cette communication par erreur, 
>> veuillez la détruire immédiatement et en aviser l'expéditeur. Merci.
> 
> 
> 
> 
> -- 
> Castor Technologies Inc
> 460 rue St-Catherine St Ouest, Suite 613 
> Montréal, Québec H3B-1A7
> (514) 360-7208 o
> (514) 798-2044 f
> [email protected] <mailto:[email protected]>
> www.castortech.com <http://www.castortech.com/> 
> 
> CONFIDENTIALITY NOTICE: The information contained in this e-mail is 
> confidential and may be proprietary information intended only for the use of 
> the individual or entity to whom it is addressed. If the reader of this 
> message is not the intended recipient, you are hereby notified that any 
> viewing, dissemination, distribution, disclosure, copy or use of the 
> information contained in this e-mail message is strictly prohibited. If you 
> have received and/or are viewing this e-mail in error, please immediately 
> notify the sender by reply e-mail, and delete it from your system without 
> reading, forwarding, copying or saving in any manner. Thank you.
> AVIS DE CONFIDENTIALITE: L’information contenue dans ce message est 
> confidentiel, peut être protégé par le secret professionnel et est réservé à 
> l'usage exclusif du destinataire. Toute autre personne est par les présentes 
> avisée qu'il lui est strictement interdit de diffuser, distribuer ou 
> reproduire ce message. Si vous avez reçu cette communication par erreur, 
> veuillez la détruire immédiatement et en aviser l'expéditeur. Merci.

_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to