Injecting JBoss EJB3 beans into Tomcat6

Injecting EJB's into a managed bean (a bean spawned by appserver, of a JSF managed bean) inside an application server is simple:
public class AppManagedBean
{
   @EJB(mappedName="ejb/myBean")
   private MyBeanRemote session;
The container looks up the mapped bean and injects it. Easy.

However in tomcat it gets a little messy. Tomcat doesn't document how to inject them. It assumes something annotated with @EJB is in the context somewhere and tries to look it up.
It has documented how to lookup ejb's by defining entries in your context.xml or server.xml. But there isn't anything documented for defining EJB's. Looking at the soure it has support for <Ejb/> references but no real clue on how to configure it. So after stepping through the code I came up with the following soloution:

My environment is JBoss 5 running remotely (on localhost). A seperate instance of Tomcat 6. In it I have defined a session bean:
@Stateful(mappedName="userSession")
public class UserSessionBean implements UserSessionRemote 
This bean is used by a JSF backing bean (i.e. a managed bean):
public class TomcatManagedBean
{
   @EJB(name="ejb/myBean")
   private MyBeanRemote session;
In order for this bean to bound to the context, you need to configure Tomcat. There are 2 ways: in the server.xml or in the context.xml
I find that putting it in META-INF/context.xml is the easiest, as it gets reloaded nicely in Eclipse. The name="ejb/myBean" corresponds to the name attribute in the <Ejb/> below. In the URL is the appserver name, port, then the mapped name (it could be myProject/ejb/bean or whatever you feel like) - as long as it matched the mappedName on the EJB.
<Context>
   <!-- Makes Tomcat manage the ejb for you. -->
   <Ejb name="ejb/myBean" type="Session" factory="org.jnp.interfaces.NamingContextFactory" URL="jnp://localhost:1099/userSession" />
</Context>
Update 2010/02/02: Correct the mappedName in AppManagedBean

Comments

  1. Hi, I am currently trying to do the same thing like you. I have a Webapp runing on Tomcat 6.0.20 and an EJB 3.0 on JBoss 4.3.
    But it is absolutly not workling. I am trying to inject my EJB in Tomcat but it doesn't work.

    If you like to help me, and send me your email-adress to gfemajor2[at]gmx.de i can send you my 2 test projects. (I will not post my hole code here, because i think it is to mutch for a comment ;-)). So that you can have a look at it and tell me what am i doing wrong.



    Thank you so far

    Christian

    ReplyDelete
  2. I just noticed I had a mapped name slightly wrong above which I've corrected - sorry if that caused some confusion.

    I've also got an alternate way of mapping it (in which I've had to edit the tomcat source). Tomcat - load & bind an external naming context

    I'll drop you an email.

    ReplyDelete
  3. Hi Chris,
    thank you for your article, it contains the information I am looking for, but I have a problem left.
    As soon as I am accessing the injected EJB I get an NullPointerException, I think it is because I don't import the right libraries.
    This are the libraries I import, it would be nice, if you could take a look, if they are complete:
    groupId: javax.ejb
    artefactId: ejb-api
    version: 3.0
    and
    groupId:javax.persistence
    artefactId: persistence-api
    version: 1.0

    All the best,
    Sebastian

    ReplyDelete
  4. I've just added a new post describing how I build my client jars. I'm assuming your using it in a webapp (like tomcat) outside of the app server (e.g. jboss)?

    If your inside the appserver you don't need to include the persistence-api or ejb-api.
    And for outside the appserver but inside a web server you would have all those jars inside the server's shared directory (e.g. tomcat/lib). Just make the dependencies <scope>provided</scope>

    ReplyDelete
  5. Hi Chris,
    thank you for your help :)
    your right the frontend is running in a ServletContainer (Tomcat 6.0.18) and the backend in an ApplicationServer (JBoss 5.1.0.GA).
    I changed the libraries accoding to your description (I put the client jars into the lib directory of the Tomcat and I made the dependencies provided), but it won't work.
    Now I am thinking, that there might be something missing in my web.xml? It just contains the follwoing part:
    <servlet>
    <display-name>FacesServlet</display-name>
    <servlet-name>FacesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>FacesServlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    Do you know if I need something more?

    ReplyDelete
  6. No, I was wrong it truly worked :) *Thank you very much* :)
    But I have one Exception left:
    Caused by: java.lang.IllegalArgumentException: Can not set com.backend.service.UserServiceRemote field com.frontend.action.LoginBean.userService to org.jnp.interfaces.NamingContext
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
    at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
    at java.lang.reflect.Field.set(Field.java:657)
    at org.apache.catalina.util.DefaultAnnotationProcessor.lookupFieldResource(DefaultAnnotationProcessor.java:213)
    at org.apache.catalina.util.DefaultAnnotationProcessor.processAnnotations(DefaultAnnotationProcessor.java:142)
    at com.sun.faces.vendor.Tomcat6InjectionProvider.inject(Tomcat6InjectionProvider.java:82)
    ... 38 more

    Do you have a clue?

    ReplyDelete
  7. Hi Chris :)

    I could fix the last problem :) Now it is working! (I fixed it by removing the attribute "mappedName" in the SessionBean) Thanks again.

    All the best,
    Sebastian

    ReplyDelete
  8. Hi Sebastian,

    No worries.
    I was going to say that the problem you having was probably related to what it was trying to resolve actually resolved to a directory not the bean.

    Looking at my example its slightly wrong:
    It should be @EJB(mappedName="ejb/myBean")
    That matches the line in context.xml name="ejb/myBean". But removing the mapped name causes it to look up by class interface which is why it works.

    -Chris

    ReplyDelete
  9. āđ€āļāļĄāļŠ์ pussy888āļ—ุāļāđāļšāļš āļŠāļģāļŦāļĢัāļšāļ—ุāļāļ„āļ™
    āđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ­āļ­āļ™āđ„āļĨāļ™์ āđāļŦāļĨ่āļ‡āļŠāļ°āļŠāļĄāđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ„āļēāļŠิāđ‚āļ™āļŠāļĨ็āļ­āļ• āļŠāļģāļŦāļĢัāļšāļ—ุāļāļ„āļ™āļ—ี่āļŠāļ­āļšāļ”้āļēāļ™āļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ­āļ­āļ™āđ„āļĨāļ™์ āđ„āļ”้āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāļšัāļ™āđ€āļ—ิāļ‡āđƒāļˆāļัāļšāđ€āļāļĄāļāļēāļĢāļžāļ™ัāļ™ āđāļĨ้āļ§āļ็āļ—āļģāđ€āļ‡ิāļ™āļˆāļēāļāļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ‚āļ­āļ‡āļžāļ§āļāđ€āļĢāļēāđ„āļ”้āļ­āļĒ่āļēāļ‡āļ‡่āļēāļĒāđ† pussy888 āđ€āļ§็āļšāļ—ี่āļŠāļ°āļŠāļĄāđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļ—ุāļāđāļšāļšāļ­āļĒ่āļēāļ‡āđƒāļŦ้āļัāļšāļ—ุāļāļ„āļ™āļ—ี่āļŠื่āļ™āļŠāļ­āļšāđƒāļ™āļ”้āļēāļ™āļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™ āđ€āļ§็āļš pussy888āļ—ี่āđ€āļ็āļšāļĢāļ§āļšāļĢāļ§āļĄāđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™ pussy888āļ—ี่āļĄีāļ„ุāļ“āļ āļēāļž āđ€āļĨ่āļ™āđāļĨ้āļ§āđ„āļ”้āđ€āļ‡ิāļ™āļˆāļĢิāļ‡ āļžāļĢ้āļ­āļĄāļšāļĢิāļāļēāļĢāļัāļšāļ—ุāļāļ„āļ™āļ—ี่āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ‚āļ­āļ‡āļžāļ§āļāđ€āļĢāļē āļšัāļ™āđ€āļ—ิāļ‡āđƒāļˆāļัāļšāđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āđ„āļ”้āļ­āļĒ่āļēāļ‡āđ„āļĄ่āļĒāļēāļāđ€āļĒ็āļ™āļ—āļģāđ€āļ‡ิāļ™āļˆāļēāļāļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™ pussy888
    āļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ‚āļ­āļ‡āļžāļ§āļāđ€āļĢāļēāđ„āļ”้āđ€āļĨāļĒāđ€āļ”ี๋āļĒāļ§āļ™ี้ pussy888
    āļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ‚āļ­āļ‡āļžāļ§āļāđ€āļĢāļē āđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāļœู้āđƒāļŦ้āļšāļĢิāļāļēāļĢāđ€āļāļĄāļāļēāļĢāļžāļ™ัāļ™āļ—ี่āđ€āļŦāļĄāļēāļ°āļŠāļĄāļ—ี่āļŠุāļ” āđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļ—ี่āļĄีāļ„ุāļ“āļ āļēāļž pussy888 āļĨืāļ­āļŠื่āļ­āļ­āļĒู่āđāļĨ้āļ§āđƒāļ™āđ€āļĢื่āļ­āļ‡āđ€āļี่āļĒāļ§āļัāļšāļāļēāļĢāđƒāļŦ้āļšāļĢิāļāļēāļĢāđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์ āļ‚ึ้āļ™āļŠื่āļ­āļĨืāļ­āļŠāļēāļ­āļĒู่āđāļĨ้āļ§āđƒāļ™āđ€āļĢื่āļ­āļ‡āđ€āļี่āļĒāļ§āļัāļšāļāļēāļĢāđƒāļŦ้āļšāļĢิāļāļēāļĢāđ€āļāļĄāļāļēāļĢāļžāļ™ัāļ™āļ—ี่āļĄีāļ„ุāļ“āļ āļēāļž āļĄีāđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļ—ุāļāļ•้āļ™āđāļšāļš āļ—ี่āļžāļĢ้āļ­āļĄāļˆāļ°āļšāļĢิāļāļēāļĢāđƒāļŦ้āļัāļšāļ—ุāļāļ„āļ™āļ—ี่āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™
    āļŠāļĢāļ§āļ‡āļŠāļ§āļĢāļĢāļ„์āļ‚āļ­āļ‡āļœู้āļ—ี่āļŠāļ­āļšāđƒāļˆāļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™ pussy888 āļžāļ§āļāđ€āļĢāļēāđ€āļ็āļšāđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™ pussy888āļ—ุāļāļ•้āļ™āđāļšāļšāļĄāļēāđ€āļ›ิāļ”āđƒāļŦ้āļšāļĢิāļāļēāļĢāļัāļšāļĨูāļāļ„้āļēāļ—ุāļāļ„āļ™āļ—ี่āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ‚āļ­āļ‡āļžāļ§āļāđ€āļĢāļēāļ—ั้āļ‡āļœāļ­āļ‡āđāļĨ้āļ§ āļ”้āļ§āļĒāđ€āļŦāļ•ุāļ™ั้āļ™ āļŠāļĄัāļ„āļĢāļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ‚āļ­āļ‡āļžāļ§āļāđ€āļĢāļē āđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāļœู้āđƒāļŦ้āļšāļĢิāļāļēāļĢāđ€āļāļĄāļāļēāļĢāļžāļ™ัāļ™āļ—ี่āđ€āļŦāļĄāļēāļ°āļŠāļĄāļ—ี่āļŠุāļ”āđƒāļ™āļŠ่āļ§āļ‡āđ€āļ§āļĨāļēāļ™ี้ āđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļ—ี่āļĄีāļ„ุāļ“āļ āļēāļž pussy888 āļžāļĢ้āļ­āļĄāļšāļĢิāļāļēāļĢāļĨูāļāļ„้āļēāļ—ุāļāļ„āļ™āļ—ี่āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™
    āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āđ€āļĨ่āļ™āļ‡่āļēāļĒ pussy888
    āļžุāļ‹āļ‹ี่ 888 āļžāļ§āļāđ€āļĢāļēāļĨืāļ­āļŠื่āļ­āļ­āļĒู่āđāļĨ้āļ§āļ™āļ°āđ€āļĢื่āļ­āļ‡āļ‚āļ­āļ‡āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒีāđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์ āļĢāļ§āļĄāļ—ั้āļ‡āļžāļ§āļāđ€āļĢāļēāļ‚ึ้āļ™āļŠื่āļ­āļĨืāļ­āļŠāļēāļ­āļĒู่āđāļĨ้āļ§āđƒāļ™āđ€āļĢื่āļ­āļ‡āļ‚āļ­āļ‡āđ€āļ§็āļšāļ—ี่āļ–ูāļāļ”ีāđ„āļ‹āļ™์āļĄāļēāđƒāļŦ้āđƒāļŠ้āļ‡āļēāļ™āđ„āļ”้āļ‡่āļēāļĒ āļ—ุāļāļ„āļ™āļ—ี่āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ‚āļ­āļ‡āļžāļ§āļāđ€āļĢāļē āļˆāļ°āđ„āļ”้āđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļĄāļēāļ āļ—ุāļāļ„āļ™āļ—ี่āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ‚āļ­āļ‡āļžāļ§āļāđ€āļĢāļē āļˆāļ°āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāđ€āļ‡ิāļ™āļˆāļēāļāļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์ pussy888 āļĻูāļ™āļĒ์āļŠāļ°āļŠāļĄāđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™ pussy888āļ—ุāļāđāļšāļšāļ­āļĒ่āļēāļ‡ āđāļŦāļĨ่āļ‡āļŠāļ°āļŠāļĄāđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļŠāļģāļŦāļĢัāļšāļ—ุāļāļ„āļ™āļ—ี่āļžāļ­āđƒāļˆāļ•้āļ­āļ‡āļāļēāļĢāļˆāļ°āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āđ„āļ”้āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ‚āļ­āļ‡āļžāļ§āļāđ€āļĢāļē
    āļžāļ§āļāđ€āļĢāļēāļžāļĢ้āļ­āļĄāļšāļĢิāļāļēāļĢāļĨูāļāļ„้āļēāļ—ุāļāļ„āļ™āļ—ี่āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™ āļžāļ§āļāđ€āļĢāļēāļžāļĢ้āļ­āļĄāļĄāļ­āļšāļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“์āļ—ี่āđ€āļĒี่āļĒāļĄāļ—ี่āļŠุāļ”āļŠāļģāļŦāļĢัāļšāļ—ุāļāļ„āļ™āļ—ี่āļ•้āļ­āļ‡āļāļēāļĢāļˆāļ°āļŠāļĢ้āļēāļ‡āļ­āļēāļŠีāļžāđ€āļŠāļĢิāļĄ āļāļģāļĨัāļ‡āļĄāļ­āļ‡āļŦāļēāļŦāļ™āļ—āļēāļ‡āļ§ิāļ˜ีāļāļēāļĢāļ—āļģāđ€āļ‡ิāļ™āđƒāļŦ้āļัāļšāļ•āļ™āđ€āļ­āļ‡ āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļัāļšāđ€āļ§็āļšāļ‚āļ­āļ‡āļžāļ§āļāđ€āļĢāļēāđ„āļ”้āđ€āļĨāļĒāđƒāļ™āļŠ่āļ§āļ‡āđ€āļ§āļĨāļēāļ™ี้ āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļ—ี่āđ€āļĒี่āļĒāļĄāļ—ี่āļŠุāļ” āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์ āļĻูāļ™āļĒ์āđ€āļ็āļšāđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™ āļ‹ึ่āļ‡āļŠāļēāļĄāļēāļĢāļ–āļĢ่āļ§āļĄāđ€āļĨ่āļ™āđ€āļāļĄāļŠ์āļāļēāļĢāļžāļ™ัāļ™āļœ่āļēāļ™āđ‚āļ—āļĢāļĻัāļžāļ—์āđ€āļ„āļĨื่āļ­āļ™āļ—ี่āđ„āļ”้
    pussy888

    ReplyDelete
  10. āļŠāļĨ็āļ­āļ• pussy888 āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļ—ี่āļ„ุāļ“āđ„āļĄ่āļŠāļĄāļ„āļ§āļĢāļĨāļ°āđ€āļĨāļĒ
    āļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āđƒāļ™āļ—ุāļāļ§ัāļ™āļ™ี้āļĄีāđƒāļŦ้āļœู้āđ€āļĨ่āļ™āđ€āļĨืāļ­āļāđ€āļĨ่āļ™āļĄāļēāļāļĄāļēāļĒāđāļšāļšāđ€āļāļĄāļ—ั้āļ‡āļĒัāļ‡āđ€āļāļĄāļšāļēāļ„āļēāļĢ่āļē āļĢูāđ€āļĨ็āļ• āđ€āļāļĄāđ„āļž่ āđ€āļāļĄāļĒิāļ‡āļ›āļ›āļĨāļē āļŦāļĢืāļ­āđ€āļāļĄāļŠāļĨ็āļ­āļ•āļ­āļ­āļ™āđ„āļĨāļ™์ āļ‹ึ่āļ‡āļ™ัāļšāļ§่āļēāđ€āļ›็āļ™āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļĒāļ­āļ”āļ™ิāļĒāļĄ āđāļĨāļ°āļ็āđ€āļ›็āļ™āļ—ี่āļāļĨ่āļēāļ§āļ–ึāļ‡āļ‚āļ­āļ‡āđ€āļŦāļĨ่āļēāļ„āļ™āļ–ูāļāđƒāļˆāđ€āļĨ่āļ™āđ€āļāļĄāļ„้āļēāļ‡āļŠิāļ™āļ­āļ­āļ™āđ„āļĨāļ™์āđ€āļ›็āļ™āļ­āļĒ่āļēāļ‡āļĒิ่āļ‡āđ‚āļ”āļĒāđƒāļ™āļ§ัāļ™āļ™ี้āļžāļ§āļāđ€āļĢāļēāļˆāļ°āļĄāļēāđ€āļ­๋āļĒāļ–ึāļ‡āļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļŠāļĨ็āļ­āļ• āļˆāļēāļāļ„่āļēāļĒāđ€āļāļĄpussy888 āļ—ี่āļ™ัāļšāļ§่āļēāđ€āļ›็āļ™āļ„่āļēāļĒāđ€āļāļĄāđƒāļ™āļ”āļ§āļ‡āđƒāļˆāļ‚āļ­āļ‡āļ„āļ™āļ­ีāļāļˆāļģāļ™āļ§āļ™āđ„āļĄ่āļ™้āļ­āļĒāļ­āļĒ่āļēāļ‡āļĒิ่āļ‡āļˆāļĢิāļ‡āđ† āđ€āļ™ื่āļ­āļ‡āļˆāļēāļāļ§่āļēāļ”้āļ§āļĒāļ•้āļ™āđāļšāļšāđ€āļāļĄāđƒāļ™āļ„่āļēāļĒāļ—ี่āļĄีāļ„āļ§āļēāļĄāļ™่āļēāļ”ึāļ‡āļ”ูāļ”āđƒāļˆ āļ™่āļēāđ€āļĨ่āļ™āļ­āļĒ่āļēāđ€āļāļĄāļŠāļĨ็āļ­āļ• āđ€āļ›็āļ™āđ€āļāļĄāļ—ี่āļ‹ึ่āļ‡āļžูāļ”āđ„āļ”้āļ§่āļē āđ„āļ”้āļĢัāļšāļ„āļ§āļēāļĄāļ™ิāļĒāļĄāļ•ิāļ”āļĨāļĄāļšāļ™ āļˆāļ™āļ–ึāļ‡āļ„āļ™āđƒāļ”āļ—ี่āđ„āļĄ่āđ€āļ„āļĒāđ€āļĨ่āļ™āđ€āļāļĄāļ™ี้āļˆัāļ”āļ§่āļēāļžāļĨāļēāļ”āļĄāļēāļāļĄāļēāļĒāļ—ีāđ€āļ”ีāļĒāļ§ āļ•āļāļĨāļ‡āļ§่āļēāđāļĄ้āļ„ุāļ“āļžāļ­āđƒāļˆ āļĢāļ§āļĄāļ—ั้āļ‡āļ­āļĒāļēāļāļĄāļēāļāļĢāļ°āđ€āļ›๋āļēāļ™āļŠ่āļ§āļ™āļŦāļŦāļ™ึ่āļ‡āđƒāļ™āļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļŠāļĨ็āļ­āļ•pussy888 āļ§ัāļ™āļ™ี้āļžāļ§āļāđ€āļĢāļēāļˆāļ°āļžāļēāļ—ุāļāļ„āļ™āđ„āļ›āļ”ูāļัāļ™āļ§่āļē āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļ™ี้ āļ”ีāļĄāļēāļāļĒิ่āļ‡āļāļ§่āļēāļ”āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āđāļšāļšāļ­ื่āļ™āđ†āđ€āļŠ่āļ™āđ„āļĢ
    āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์ pussy888
    āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์ pussy888 āđāļ™āđ€āļāļĄāļĒāļ­āļ”āļ™ิāļĒāļĄ āļĢāļ§āļĄāļ—ั้āļ‡āđ€āļ›็āļ™āļ—ี่āđ€āļ­่āļĒāļ–ึāļ‡āđ€āļ›็āļ™āļ­āļĒ่āļēāļ‡āļĄāļēāļāđƒāļ™āļ›ี 2020 āļ™ี้ āļ”้āļ§āļĒāđāļšāļšāļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāđ€āļ­āļ‡ āđāļšāļšāļ­āļĒ่āļēāļ‡āđ€āļāļĄ āļ„āļ§āļēāļĄāļŠāļ™ุāļāļŠāļ™āļēāļ™āļĢ่āļēāđ€āļĢิāļ‡ āđāļŠāļ‡āļŠāļ§่āļēāļ‡ āļŠีāđ€āļŠีāļĒāļ‡āļ”้āļēāļ™āđƒāļ™āđ€āļāļĄāļ—ี่āļŠ่āļ§āļĒāļ—āļģāđƒāļŦ้āļœู้āđ€āļĨ่āļ™āđ„āļ”้āļĢัāļšāļ„āļ§āļēāļĄāļŠāļ™ุāļāļŠāļ™āļēāļ™ āļ„āļ§āļēāļĄāļĢāļ°āļ—ึāļāđƒāļˆāđ„āļ›āļัāļšāļ—ุāļāđ†āļāļēāļĢāļžāļ™ัāļ™ āļ็āđ€āļĨāļĒāļĄีāļšุāļ„āļ„āļĨāļ—ี่āđ€āļ‚้āļēāļĄāļēāđ€āļĨ่āļ™āđ€āļāļĄāļŠāļĨ็āļ­āļ•pussy888 āļัāļ™āļ­่āļēāļ‡āļ•āļĨāļ­āļ” āļ—ั้āļ‡āđ€āļāļĄāļŠāļĨ็āļ­āļ•pussy888āļ™ี้āļĒัāļ‡āđ€āļ›็āļ™āđ€āļāļĄāļ—ี่āđ€āļĨ่āļ™āļ‡่āļēāļĒ āļœู้āđ€āļĨ่āļ™āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāđ€āļ‡ิāļ™āļˆāļēāļāđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļĨัāļāļĐāļ“āļ°āļ™ี้āđ„āļ”้āđ€āļĢ็āļ§āļāļ§่āļēāļāļĄāļ„āļēāļŠิāđ‚āļ™āļ­ื่āļ™āđ†āļ็āđ€āļĨāļĒāđ„āļĄ่āļ•้āļ­āļ‡āļ‰āļ‡āļ™āđƒāļˆāđ€āļĨāļĒāļ§่āļē āđ€āļžāļĢāļēāļ°āļ­āļ°āđ„āļĢāļ‚āļ“āļ°āļ™ี้āļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļŠāļĨ็āļ­āļ• pussy888 āļ–ึāļ‡āđāļ›āļĨāļ‡āđ€āļ›็āļ™āļ—ี่āļŠāļ­āļšāđƒāļˆāļ‚āļ­āļ‡āđ€āļŦāļĨ่āļēāļ™ัāļāđ€āļĨ่āļ™āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļัāļ™āđ€āļžิ่āļĄāļ‚ึ้āļ™āđ€āļĢื่āļ­āļĒāđ†āļ§ัāļ™āđāļĨ้āļ§āļ§ัāļ™āđ€āļĨ่āļē
    āļĢāļ§āļĄāļ—ั้āļ‡āđƒāļ™āļ§ัāļ™āļ™ี้āđāļĄ้āļ„ุāļ“āļžึāļ‡āļžāļ­āđƒāļˆāļ—ี่āļˆāļ°āļ—āļ”āļĨāļ­āļ‡āđ€āļ‚้āļēāļĄāļēāļĢ่āļ§āļĄāļŠāļ™ุāļāļŠāļ™āļēāļ™ āđāļĨ้āļ§āļ็āļ•ื่āļ™āđ€āļ•้āļ™ āđ„āļ›āļัāļšāļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļŠāļĨ็āļ­āļ•pussy888 āļžāļ§āļāđ€āļĢāļēāļĄีāļ§ิāļ˜ีāļāļēāļĢāļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļŠāļĨ็āļ­āļ• āļ—ี่āļŠāļēāļĄāļēāļĢāļ–āļŠ่āļ§āļĒāđƒāļŦ้āļœู้āđ€āļĨ่āļ™āđ„āļ”้āđ‚āļ­āļāļēāļŠāļŠāļģāļŦāļĢัāļšāđ€āļžื่āļ­āļāļēāļĢāļ—āļģāđ€āļ‡ิāļ™āļˆāļēāļāđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ™ี้āđ„āļ”้āļ‡่āļēāļĒāļĄāļēāļāļĒิ่āļ‡āļ‚ึ้āļ™āļāļ§่āļēāđ€āļ”ิāļĄāļĄāļēāļāļēāļ
    āđ€āļĨ่āļ™āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļŠāļĨ็āļ­āļ•pussy888 āļ­āļĒ่āļēāļ‡āļĄีāļŠāļ•ิāļŠัāļĄāļ›āļŠัāļāļāļ° āļĢāļ§āļĄāļ—ั้āļ‡āļ„ิāļ”āļžิāļ™ิāļˆāļžิāļˆāļēāļĢāļ“āļēāđƒāļŦ้āļ”ีāļ—ุāļāļ„āļĢāļēāļ§āļ่āļ­āļ™āļˆāļ°āđ€āļ‚้āļēāļĄāļēāļŠāļĄัāļ„āļĢāđ€āļĨ่āļ™āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์ āđ€āļ—่āļēāļ™ั้āļ™āđ„āļĄ่āļžāļ­ āļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļ•ิāļ”āļ­āļĒู่āļŠิāļ”āļ™āļ­āļ­āļ™āđ„āļĨāļ™์āļ‚āļ­āļ‡āļ„ุāļ“āļˆāļģāđ€āļ›็āļ™āļ•้āļ­āļ‡āđāļ•āļāļ•่āļēāļˆāļēāļāļœูāļ­ื่āļ™āđ€āļžื่āļ­āđ€āļ›็āļ™āļāļēāļĢāđ€āļžิ่āļĄāļŠ่āļ­āļ‡āļ—āļēāļ‡āļŠāļģāļŦāļĢัāļšāđƒāļ™āļāļēāļĢāļ—āļģāđ€āļ‡ิāļ™ āļĒāļāļ•ัāļ§āļ­āļĒ่āļēāļ‡āđ€āļŠ่āļ™ āļžāļ™ัāļ™āļ„ูāļ“2 āđ€āļžื่āļ­āđ€āļžิ่āļĄāļŠ่āļ­āļ‡āļ—āļēāļ‡āļŠāļģāļŦāļĢัāļšāđƒāļ™āļāļēāļĢāļ—āļģāđ€āļ‡ิāļ™āđ€āļžิ่āļĄāļ‚ึ้āļ™āđ€āļĢื่āļ­āļĒāđ†āļˆāļēāļāļāļēāļĢāļŠāļ™āļ°āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ—ี่āđ€āļŠีāļĒāđ„āļ›
    āđ„āļĄ่āļĒืāļĄ āļู้ āļŦāļĢืāļ­āļ™āļģāđ€āļ‡ิāļ™āļ‚āļ­āļ‡āļœู้āļ­ื่āļ™āļĄāļēāļĨāļ‡āļ—ุāļ™āđ€āļžื่āļ­āđ€āļĨ่āļ™āđ€āļāļĄāļ„āļēāļŠิāđ‚āļ™āļ­āļ­āļ™āđ„āļĨāļ™์ āļ”้āļ§āļĒāđ€āļŦāļ•ุāļ§่āļēāļĄัāļ™āļ­āļēāļˆāļ—āļģāđƒāļŦ้āļœู้āđ€āļĨ่āļ™āļĄีāļ›ัāļāļŦāļēāļ”้āļēāļ™āļāļēāļĢāđ€āļ‡ิāļ™āļ•āļēāļĄāļĄāļēāđ„āļ”้ āđ€āļĄื่āļ­āđ€āļĨ่āļ™āđ€āļāļĄāđāļž้
    āļ§ิāļ˜ีāļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļŠāļĨ็āļ­āļ•
    pussy888 āļ™ี้āļĒัāļ‡āļĄีāļ­ีāļāļŦāļĨāļēāļĒāđ€āļ„āļĨ็āļ”āļĨัāļšāļĢ่āļ§āļĄāļัāļ™ āļ‹ึ่āļ‡āļ–้āļēāļŦāļēāļāļœู้āđ€āļĨ่āļ™āļžāļ­āđƒāļˆ āļ้āļŠāļēāļĄāļēāļĢāļ–āļ‚้āļēāļĄāļēāđ€āļĢีāļĒāļ™āļĢู้āļ§ิāļ˜ีāļāļēāļĢāđ€āļĨ่āļ™āđ€āļāļĄāļŠāļĨ็āļ­āļ•āļžāļ­āļ”ีāđ€āļ§็āļšāđ„āļ‹āļ•์āļ‚āļ­āļ‡āļžāļ§āļāđ€āļĢāļēāļ•āļĨāļ­āļ” 24 āļŠั่āļ§āđ‚āļĄāļ‡ āļ—ี่āļŠāļģāļ„ัāļ āđ€āļ§็āļšāđ„āļ‹āļ•์āļžāļ§āļāđ€āļĢāļēāļĄีāđ‚āļ›āļĢāđ‚āļĄāļŠั่āļ™āđ€āļ”็āļ”āļĢāļ­āļ„āļ­āļĒāļ„ุāļ“āļ­āļĒู่āļ”้āļ§āļĒ

    ReplyDelete
  11. Very Helpful Articles. lady hawk It might help you. lady hawk Thanks For Sharing
    lady hawk Thank you very much.

    ReplyDelete
  12. This Is Really Useful And Nices Information. lady hawk
    This are such great articles. lady hawk This articles can help you to make some new ideas.
    https://soccersurfer98.hatenablog.com/entry/2020/09/02/132139?_ga=2.193217001.552343305.1598844608-1286484823.1596077192 I appreciate for reading my blogs.

    ReplyDelete

Post a Comment