geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Neal Sanche <n...@nsdev.org>
Subject Re: JavaMail Redux
Date Sat, 01 Oct 2005 06:32:13 GMT
Well, after many hours of trying to figure out what's going on, I have 
made little progress.

I am now getting the following exception:

javax.mail.NoSuchProviderException: Unable to locate provider for 
protocol: smtp

        at javax.mail.Session.getProvider(Session.java:225)
        at javax.mail.Session.getTransport(Session.java:331)
        at javax.mail.Session.getTransport(Session.java:320)
        at 
org.acme.mailverifier.ejb.MailVerifierSessionBean.sendValidationEmail
(MailVerifierSessionBean.java:100)

My Gbeans currently look like the following, though I'm certain they are 
incorrect.

    <gbean name="smtpProtocol"
        class="org.apache.geronimo.mail.ProtocolGBean">
        <attribute name="host">10.0.0.1</attribute>
        <attribute name="protocol">smtp</attribute>
    </gbean>
   
        <gbean name="smtpTransport"
           class="org.apache.geronimo.mail.SMTPTransportGBean">
           <attribute name="host">10.0.0.1</attribute>
           <attribute name="port">25</attribute>
        </gbean>

    <gbean name="mail/MailSession"
      class="org.apache.geronimo.mail.MailGBean">
      <attribute name="transportProtocol">smtp</attribute>
      <attribute name="host">10.0.0.1</attribute>
      <attribute name="useDefault">true</attribute>
      <attribute name="debug">true</attribute>
    </gbean>

The protocol and transport beans are things I was trying, but I'm sure 
they're wrong.

I am able to get the javax.mail.Session instances, so that's working. 
It's just that Javamail doesn't seem to be making the necessary 
associations. I've even tried putting javamail.default.providers files 
into META_INF but it doesn't seem to get far with those. I've even set 
the Debug flag and it's not outputting any debug information that I can see.

Thanks for any help you can give.

Cheers.

-Neal

David Jencks wrote:

>
> On Sep 30, 2005, at 7:19 PM, Neal Sanche wrote:
>
>> Sorry David, I must be extra dense today...
>>
>> Here's what I understand of the way this works so far:
>>
>> I have to start a GBean, and I have to make a resource-ref in my  
>> Session bean to use it. But I think I'm missing a step. How does  
>> Geronimo know which GBean represents a certain resource? Do I also  
>> have to make a gbean-ref in my open-ejb.xml deployment plan to make  
>> the 'link' somehow? I'm quite confused about this whole area right  
>> now, I'm afraid. Is there anyone on the list who's used JavaMail who  
>> can point me to example source, or docs? Even a similar situation  
>> where a GBean is linked to an SLSB resource-ref would be excellent.
>
>
> Well, you need to start 2 gbeans: one for the mail session and one 
> for  the smtp transport.  You only started the transport one, so there 
> was  no session for the resource-ref to connect to.
>
> All resource-refs (and ejb-refs, except for corba transport) work by  
> matching gbean names, which for jsr-77 objects are pretty well  
> specified by the jsr-77 spec.  So, from the information you provide,  
> namely the name "mail/MailSession" and the type javax.mail.Session we  
> start constructing pieces of gbean name to query with.  Mail and JAXR  
> are special cases, we notice these types and for mail pick  
> j2eeType=JavaMailResource.  You are in a server with domain  
> geronimo.server and J2EEServer=geronimo, so we have  geronimo.server: 
> J2EEServer=geronimo,j2eeType=JavaMailResource,name=mail/MailSession,*   
> First we look for gbeans matching this pattern in your current  
> application, and in your case when you add the missing MailGBean it  
> will find that one.  If you leave it out (as at present) it will then  
> look for matches in "standalone modules", i.e. with  
> J2EEApplication=null.  So, if you added it to a gbean-only plan or  
> included it in the o/a/g/Server plan the query would find it.  You 
> can  always include more info in a resource-ref in the geronimo plan   
> to  supply the entire name of the target gbean.
>
> So.... if your plan was:
>
> <DEFANGED_application
>       xmlns="http://geronimo.apache.org/xml/ns/j2ee/application"
>       configId="org/acme/PhoneBook">
>
>    <dependency>
>        <uri>geronimo/jars/geronimo-mail-1.0-SNAPSHOT.jar</uri>
>    </dependency>        <module>
>        <connector>tranql-connector-1.0-SNAPSHOT.rar</connector>
>        <alt-dd>mysql-plan.xml</alt-dd>
>    </module>
>
>     <gbean name="mail/MailSession"  
> class="org.apache.geronimo.mail.MailGBean"/>
>
>      <gbean name="mail/MailSession"
>      class="org.apache.geronimo.mail.SMTPTransportGBean">
>        <attribute name="host">10.0.0.1</attribute>
>        <attribute name="port">25</attribute>
>    </gbean>
>
> </application>
>
> the resource ref would be resolved.  The part I don't know is whether  
> you need to do something else to tell the mail session to use smtp  
> transport or if the fact the transport is initialized will  
> automatically register it with the mail session.  I suspect the 
> latter  but don't know.  This should be covered in standard javamail 
> docs  however.
>
> Hope this helps,
> david jencks
>
>>
>> Thanks.
>>
>> -Neal
>>
>> David Jencks wrote:
>>
>>> I'm not the expert on javamail, but...
>>>
>>> I think you need a MailGBean to be the resource-ref target:
>>>
>>>     <gbean name="mail/MailSession"   
>>> class="org.apache.geronimo.mail.MailGBean"/>
>>>
>>> I'm not exactly sure what you need to configure so the mail gbean  
>>> hooks  up to the smtp protocol bean you already have.
>>>
>>> Hope this points you a useful direction :-)
>>>
>>> thanks
>>> david jencks
>>>
>>> On Sep 30, 2005, at 6:24 PM, Neal Sanche wrote:
>>>
>>>> Hi Guys,
>>>>
>>>> A long while ago, I asked about getting JavaMail working in  
>>>> Geronimo.  Here's what I have done, and the current result:
>>>>
>>>> My geronimo-application.xml:
>>>>
>>>> <DEFANGED_application
>>>>       xmlns="http://geronimo.apache.org/xml/ns/j2ee/application"
>>>>       configId="org/acme/mailverifier">
>>>>       <gbean name="mail/MailSession"
>>>>    class="org.apache.geronimo.mail.SMTPTransportGBean">
>>>>      <attribute name="host">mail.example.com</attribute>
>>>>  </gbean>
>>>>
>>>> </application>
>>>>
>>>> A resource-ref in a session bean that looks like:
>>>>
>>>>         <resource-ref >
>>>>            <description><![CDATA[JavaMail Resource]]></description>
>>>>            <res-ref-name>mail/MailSession</res-ref-name>
>>>>            <res-type>javax.mail.Session</res-type>
>>>>            <res-auth>Container</res-auth>
>>>>            <res-sharing-scope>Shareable</res-sharing-scope>
>>>>         </resource-ref>
>>>>
>>>> I've edited the j2ee-server-plan.xml to add:
>>>>
>>>>    <dependency>
>>>>      <uri>javamail/jars/activation.jar</uri>
>>>>    </dependency>
>>>>    <dependency>
>>>>      <uri>javamail/jars/mail.jar</uri>
>>>>    </dependency>
>>>>
>>>>    <dependency>
>>>>      <uri>geronimo/jars/geronimo-mail-1.0-SNAPSHOT.jar</uri>
>>>>    </dependency>
>>>>
>>>> But I get the following error:
>>>>
>>>> 18:08:16,044 ERROR [Deployer] Deployment failed due to
>>>> org.apache.geronimo.gbean.InvalidConfigurationException: Could 
>>>> not   load class or
>>>> g.apache.geronimo.mail.SMTPTransportGBean
>>>>        at   
>>>> org.apache.geronimo.gbean.GBeanInfo.getGBeanInfo(GBeanInfo.java:56)
>>>>        at   
>>>> org.apache.geronimo.deployment.service.ServiceConfigBuilder.addGBeanD
>>>> ata(ServiceConfigBuilder.java:293)
>>>>        at   
>>>> org.apache.geronimo.deployment.service.ServiceConfigBuilder.addGBeans
>>>> (ServiceConfigBuilder.java:288)
>>>>        at   
>>>> org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfigurati
>>>> on(EARConfigBuilder.java:339)
>>>>        at   
>>>> org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLI
>>>> B$$38e56ec6.invoke(<generated>)
>>>>        at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>>>>        at   
>>>> org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethod
>>>> Invoker.java:38)
>>>>
>>>> If I change my geronimo-application.xml to:
>>>>
>>>> <DEFANGED_application
>>>>       xmlns="http://geronimo.apache.org/xml/ns/j2ee/application"
>>>>       configId="org/acme/PhoneBook">
>>>>
>>>>    <dependency>
>>>>        <uri>geronimo/jars/geronimo-mail-1.0-SNAPSHOT.jar</uri>
>>>>    </dependency>        <module>
>>>>        <connector>tranql-connector-1.0-SNAPSHOT.rar</connector>
>>>>        <alt-dd>mysql-plan.xml</alt-dd>
>>>>    </module>
>>>>      <gbean name="mail/MailSession"
>>>>      class="org.apache.geronimo.mail.SMTPTransportGBean">
>>>>        <attribute name="host">10.0.0.1</attribute>
>>>>        <attribute name="port">25</attribute>
>>>>    </gbean>
>>>> </application>
>>>>
>>>> That error goes away, but I'm left with:
>>>>
>>>> Deployer operation failed: Unable to resolve resource reference   
>>>> 'mail/MailSession' (no matching resources found)
>>>> org.apache.geronimo.common.DeploymentException: Unable to resolve   
>>>> resource reference 'mail/MailSession' (no matching resources found)
>>>>    at   
>>>> org.apache.geronimo.naming.deployment.ENCConfigBuilder.addResourceRef 
>>>> s( ENCConfigBuilder.java:231)
>>>>    at   
>>>> org.apache.geronimo.naming.deployment.ENCConfigBuilder.buildComponent 
>>>> Co ntext(ENCConfigBuilder.java:764)
>>>>    at   
>>>> org.openejb.deployment.SessionBuilder.processEnvironmentRefs(SessionB 
>>>> ui lder.java:167)
>>>>    at   
>>>> org.openejb.deployment.SessionBuilder.addEJBContainerGBean(SessionBui 
>>>> ld er.java:296)
>>>>    at   
>>>> org.openejb.deployment.SessionBuilder.buildBeans(SessionBuilder.java: 
>>>>  182)
>>>>    at   
>>>> org.openejb.deployment.OpenEJBModuleBuilder.addGBeans(OpenEJBModuleBu 
>>>> il der.java:514)
>>>>    at   
>>>> org.openejb.deployment.OpenEJBModuleBuilder$$FastClassByCGLIB$$11bd7b 
>>>> 20 .invoke(<generated>)
>>>>    at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
>>>>
>>>> Any ideas of what I'm doing wrong?
>>>>
>>>> Thanks.
>>>>
>>>> -Neal
>>>>
>>>>
>>


Mime
View raw message