阿里短信集成

1、准备工作

阿里短信平台:

https://www.aliyun.com/product/sms?utm_content=se_1006519387

 阿里云的账号我已经有了,也通过了实名认证,接下来的开通短信服务、申请签名、申请短信模板也都不难,关键是得等后台审核,挺耽误时间的

我的模板内容:

告警区域:${area},告警时间:${time},告警信息:${msg}。

 快速学习界面:

https://dysms.console.aliyun.com/dysms.htm?spm=a2c4g.11186623.2.12.67466d880lhyXx#/quickStart

还提供了sdk和demo的下载

 2、集成到项目

导入两个需要依赖的jar

工程依赖了2个jar包(存放在工程的libs目录下)
* 1:aliyun-java-sdk-core.jar
* 2:aliyun-java-sdk-dysmsapi.jar

实现的代码可以从demo中拷贝,稍作修改即可

3、异常处理

 集成后,在main方法中运行一切正常,但是当项目跑起来以后,触发短信发送时,却发生了异常,内容如下:

16:06:15,491 ERROR [org.jboss.seam.async.AsynchronousExceptionHandler] (DefaultQuartzScheduler_Worker-8) Exception thrown whilst executing asynchronous call: java.lang.RuntimeException: exception invoking: doSendSmsEventInfo
    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:154) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.Component.callComponentMethod(Component.java:2317) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.core.Events.raiseEvent(Events.java:85) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.async.AsynchronousEvent$1.process(AsynchronousEvent.java:33) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.async.Asynchronous$ContextualAsynchronousRequest.run(Asynchronous.java:80) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.async.AsynchronousEvent.execute(AsynchronousEvent.java:27) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.async.QuartzDispatcher$QuartzJob.execute(QuartzDispatcher.java:243) [jboss-seam.jar:2.3.1.Final]
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz.jar:1.6.5]
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525) [quartz.jar:1.6.5]
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_60]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_60]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_60]
    at java.lang.reflect.Method.invoke(Method.java:497) [rt.jar:1.8.0_60]
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:79) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.transaction.TransactionInterceptor$1.work(TransactionInterceptor.java:97) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.util.Work.workInTransaction(Work.java:61) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.transaction.TransactionInterceptor.aroundInvoke(TransactionInterceptor.java:91) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:196) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:114) [jboss-seam.jar:2.3.1.Final]
    at com.Tip3000.sms.ali.AliSmsUtilAction_$$_javassist_seam_23.doSendSmsEventInfo(AliSmsUtilAction_$$_javassist_seam_23.java)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_60]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_60]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_60]
    at java.lang.reflect.Method.invoke(Method.java:497) [rt.jar:1.8.0_60]
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [jboss-seam.jar:2.3.1.Final]
    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144) [jboss-seam.jar:2.3.1.Final]
    ... 8 more
Caused by: java.lang.AbstractMethodError: gnu.xml.dom.DomElement.getTextContent()Ljava/lang/String;
    at com.aliyuncs.regions.InternalEndpointsParser.parseEndpoints(InternalEndpointsParser.java:56) [aliyun-java-sdk-core-3.3.1.jar:]
    at com.aliyuncs.regions.InternalEndpointsParser.getEndpoint(InternalEndpointsParser.java:90) [aliyun-java-sdk-core-3.3.1.jar:]
    at com.aliyuncs.profile.DefaultProfile.getEndpoints(DefaultProfile.java:148) [aliyun-java-sdk-core-3.3.1.jar:]
    at com.aliyuncs.profile.DefaultProfile.addEndpoint(DefaultProfile.java:269) [aliyun-java-sdk-core-3.3.1.jar:]
    at com.aliyuncs.profile.DefaultProfile.addEndpoint(DefaultProfile.java:263) [aliyun-java-sdk-core-3.3.1.jar:]
    at com.Tip3000.sms.ali.AliSmsUtil.sendSms(AliSmsUtil.java:93)
    at com.Tip3000.sms.ali.AliSmsUtilAction.doSendSmsEventInfo(AliSmsUtilAction.java:154)
    ... 35 more

 可见caused by gnu.xml.dom.DomElement,问题出在这个类,而这个类在 gnujaxp.jar 中,于是我删除了这个jar包,重新编译项目后,运行一切正常。

原文地址:https://www.cnblogs.com/LcxSummer/p/14069509.html