科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基于控件构架开发访问JavaMail的控件

基于控件构架开发访问JavaMail的控件

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  Beehive只是提供了三种访问企业资源的系统控件,现实情况下我们需要访问更多类型的企业资源,所以我们需要自己来开发符合自己需要的控件。在这篇文章里,作者将介绍如何基于控件架构开发访问JavaMail资源的控件,简化对JavaMail资源的访问。

作者:中国IT实验室 来源:中国IT实验室 2007年9月30日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

  清单1 src\org\vivianj\beehive\controls\examples\javamail\

  JavaMailControl.java

1.	package org.vivianj.beehive.controls.examples.javamail;
2.	
3.	import java.lang.annotation.ElementType;
4.	import java.lang.annotation.Inherited;
5.	import java.lang.annotation.Retention;
6.	import java.lang.annotation.RetentionPolicy;
7.	import java.lang.annotation.Target;
8.	
9.	import org.apache.beehive.controls.api.bean.AnnotationConstraints;
10.	import org.apache.beehive.controls.api.bean.AnnotationMemberTypes;
11.	import org.apache.beehive.controls.api.bean.ControlInterface;
12.	import org.apache.beehive.controls.api.properties.PropertySet;
13.	
14.	/**
15.	 * JavaMailControl 是JavaMail控件的公共接口类
16.	 */
17.	@ControlInterface
18.	public interface JavaMailControl {
19.	
20.		/**
21.		 * 获取邮件发送过程中产生的最后一个违例
22.		 * @return	返回邮件发送过程中产生的最后一个违例
23.		 */
24.		public Throwable getMailException();
25.	
26.		/**
27.		 * 类级别的注释,用于注释JavaMail控件中目标SMTP服务器的
28.	       相关信息
29.		 */
30.		@PropertySet(prefix = “SMTPServer”)
31.	    /* 使用@ Inherited注释表示该注释可以被自动继承 */
32.		@Inherited
33.	    /* 使用AllowExternalOverride表示定义的接口可以被覆盖 */
34.		@AnnotationConstraints.AllowExternalOverride
35.		@Retention(RetentionPolicy.RUNTIME)
36.	    /* 使用TYPE和FIRELD表示该注释能够作用于类、接口
37.	       以及类成员变量 */
38.		@Target( { ElementType.TYPE, ElementType.FIELD })
39.		public @interface SMTPServer {
40.	
41.	
42.			/**
43.			 * SMTP邮件发送服务器的地址,这个属性是必须设置的
44.			 */
45.			String serverAddress();
46.	
47.			/**
48.			 * 使用该SMTP服务器发送邮件是否需要安全认证 
49. * true - 需要安全认证
50. * false - 不需要安全认证 51. */ 52. @AnnotationMemberTypes.Optional 53. boolean authorizationRequired() default false; 54. 55. /** 56. * 访问SMTP邮件服务器时使用的用户名 57. */ 58. @AnnotationMemberTypes.Optional 59. String principal() default ""; 60. 61. /** 62. * 访问SMTP邮件服务器时使用的密码 63. */ 64. @AnnotationMemberTypes.Optional 65. String credentials() default ""; 66. } 67. 68. /** 69. * 70. * Message 用于注释继承类中的业务方法,描述被发送邮件的信息 71. */ 72. @PropertySet(prefix = "Message") 73. @Inherited 74. @AnnotationConstraints.AllowExternalOverride 75. @Retention(RetentionPolicy.RUNTIME) 76. @Target( { ElementType.METHOD }) 77. public @interface Message { 78. 79. /** 80. * 邮件的发送者 81. */ 82. String from(); 83. 84. /** 85. * 邮件的接收者,可以使用xxx@xx.com,xxx1@xx.com,...的 86. 形式传递多个接收者 87. */ 88. String to(); 89. 90. /** 91. * 邮件抄送的接收者,可以使用 xxx@xx.com, 92. xxx1@xx.com,...的形式传递多个抄送的接收者 93. */ 94. @AnnotationMemberTypes.Optional 95. String cc() default ""; 96. 97. /** 98. * 邮件暗送的接收者,可以使用xxx@xx.com, 99. xxx1@xx.com,...的形式传递多个暗送的接收者 100. */ 101. @AnnotationMemberTypes.Optional 102. String bcc() default ""; 103. 104. /** 105. * 邮件的主题 106. */ 107. @AnnotationMemberTypes.Optional 108. String subject() default ""; 109. 110. /** 111. * 被发送邮件的类型,默认使用text/plain 112. */ 113. @AnnotationMemberTypes.Optional 114. String contentType() 115. default "text/plain;charset=UTF-8"; 116. 117. 118. /** 119. * 邮件附件 120. */ 121. @AnnotationMemberTypes.Optional 122. String attachment() default ""; 123. } 124. }

  从清单1中提供的源代码中我们注意到,SMTPServer接口的authorizationRequired、principal、credentials属性之前使用了@AnnotationMemberTypes.Optional注释。应用了@AnnotationMemberTypes.Optional注释属性表示用户使用过程中可以不为这些属性提供内容。没有提供@AnnotationMemberTypes.Optional注释的属性(比如serverAddress)被视为必须设置的属性,控件使用者使用该注释时必须提供对应的声明,否则将无法通过编译。

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章