Sunucumun içeriği içinde bir posta oturumu oluşturmak ve daha sonra JNDI'yi yay çerçeve tasarımım içine enjekte etmek için kullanıyorum. İşte bağlam nasıl göründüğü:Spring - javax.mail.session dosyasını dönüştürebilirsiniz
<Resource name="mail/session" auth="Container"
type="javax.mail.Session"
mail.smtp.from="[email protected]"
mail.smtp.user="[email protected]"
mail.smtp.auth="true"
mail.smtp.starttls.enable="true"
/>
Ve nerede o getiriyorum:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" ref="smtpHost"/>
<property name="password" ref="smtpPassword"/>
<property name="port" ref="smtpPort"/>
<property name="username" ref="smtpFrom"/>
<property name="session" ref="smtpSession"/>
</bean>
:
<bean id="smtpSession" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/mail/session"/>
</bean>
ve Bahar java posta gönderene enjekte ediyorum nerede Şimdi burada aldığım mesaj:
Caused by: java.lang.IllegalStateException: Cannot convert value of type [javax.
mail.Session] to required type [javax.mail.Session] for property 'session': no m
atching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(Ty
peConverterDelegate.java:231)
at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrap
perImpl.java:447)
... 51 more
Uh, ne ???? Neden onu değiştirmeye çalışıyor?
Tam olarak ne olduğu, ama bunun bir sorun olacağını anlamadım. Sınıf yükleyici, örnekleri bir şekilde ayırıyor ve adresi bellekle karşılaştırıyor mu? – Thom
@Thom: Java, aynı ada sahip iki sınıf için davranır, ancak farklı sınıf yükleyicilerinden uyumsuz olarak yüklenir. Tanımları aynı olsa bile, birinden diğerine atlayamazsınız. – skaffman
Bu benim de sorunumu çözdü. Oldukça can sıkıcı olduğunu söylemeliyim, bir 'mail.jar' kopyası arıyordum, fakat bir araç kullandıktan ve javax.mail.Session'ı aradıktan sonra Apache CXF'in kendi JavaMail uygulamasını içeren Apache Geronimo'ya bağlı olduğunu fark ettim. . – g00glen00b