1. 程式人生 > 實用技巧 >阿里簡訊整合

阿里簡訊整合

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 bygnu.xml.dom.DomElement,問題出在這個類,而這個類在 gnujaxp.jar 中,於是我刪除了這個jar包,重新編譯專案後,執行一切正常。