Adrian Colyer CTO Interface21 - - PowerPoint PPT Presentation

adrian colyer cto interface21
SMART_READER_LITE
LIVE PREVIEW

Adrian Colyer CTO Interface21 - - PowerPoint PPT Presentation

Adrian Colyer CTO Interface21


slide-1
SLIDE 1
  • Adrian Colyer

CTO Interface21

slide-2
SLIDE 2
  • !
slide-3
SLIDE 3
  • !
slide-4
SLIDE 4
  • !

service layer

dao repository

web layer

data access layer

controller business service

slide-5
SLIDE 5
  • !
  • !"#
  • !
  • $!
slide-6
SLIDE 6
  • !

%!&

powerful

slide-7
SLIDE 7
  • !

!

  • implementation
slide-8
SLIDE 8
  • !
  • !
slide-9
SLIDE 9
  • !

' !" # ' !

  • ' $!
slide-10
SLIDE 10
  • !
  • <aop:config>

<aop:advisor pointcut="SystemArchitecture.businessService()" advice-ref="tx-demarcation"/> </aop:config>

slide-11
SLIDE 11
  • !
  • <tx:advice id="tx-demarcation">

<method name="*" propagation="REQUIRED" isolation="DEFAULT"/> </tx:advice>

➔ ()*+,-./%,-0

slide-12
SLIDE 12
  • !
  • "

#$%&#

  • "

'

  • "&!"

'() *++ !

  • !
slide-13
SLIDE 13
  • !
  • 1!$&

23' 4) ++5 2#6+75

slide-14
SLIDE 14
  • !

  • !
  • $!
slide-15
SLIDE 15
  • !
  • 8 ! !

"9

  • ")

% : ! "#:;<+ 0-# !#

:0-#&

slide-16
SLIDE 16
  • !

!"#$

  • !
  • !
slide-17
SLIDE 17
  • !

=!#

:

0-#&=

slide-18
SLIDE 18
  • !

%"

4)!> !?=-#=: ?= >@=@ !0-#> "-#-#@A 77#!& B

slide-19
SLIDE 19
  • !

&'

;

  • >@
  • >@
  • !&
slide-20
SLIDE 20
  • !
  • 4

"-#)A 77& 4)!> !?=-#=: ?= >@= @ !0-#> "-#-#@A 77#!& B B

slide-21
SLIDE 21
  • !

(")$

<aop:aspectj-autoproxy/> <context:component-scan> <context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect"/> </context:component-scan>

slide-22
SLIDE 22
  • !
  • CD0EFG!

)#*H: ; D

slide-23
SLIDE 23
  • !

$

<aop:config> <aop:aspect ref="hibernateExceptionTranslator"> <aop:after-throwing throwing="hibernateEx" pointcut="SystemArchitecture.dataAccessOperation()" method="rethrowAsDataAccessException"/> </aop:aspect> </aop:config>

slide-24
SLIDE 24
  • !

*+

,- ' ,''. ,' ,'' ')'.

  • /-

,- - ' ,- - .

  • parameter bound

in pcut expression

slide-25
SLIDE 25
  • !

,

)#=#= I 7$! 4, 0#

  • -#)
slide-26
SLIDE 26
  • !

✔ !"#

  • $!
slide-27
SLIDE 27
  • !
  • 0-#&
  • 0;H0-#

0;

  • %:! J

0;H, &

slide-28
SLIDE 28
  • !

#-.

  • /012

#/-341'5675''-6')8. )/-341'5675''-6'. "#*9" 6 6 )6 .

  • !
slide-29
SLIDE 29
  • !

#-.

  • !"

#$% &'&'#% (()'" " *% + &''" &'#'% + + &'% +

slide-30
SLIDE 30
  • !
  • <aop:config>

<aop:aspect ref="deadlockLoserRetry"> <aop:pointcut id="idempotentOperation" expression= "SystemArchitecture.businessService()"/> <aop:around pointcut-ref="idempotentOperation" method="doConcurrentOperation"/> </aop:aspect> </aop:config>

slide-31
SLIDE 31
  • !
  • <bean id="deadlockLoserRetry"

class="DeadlockLoserRetry"> <property name="maxAttempts" value="2"/> </bean>

slide-32
SLIDE 32
  • !

"

K6 /

  • ;K-#

K

slide-33
SLIDE 33
  • !

+

%! ! L!< <! &

slide-34
SLIDE 34
  • !

+

  • 2224+':6-

#:

slide-35
SLIDE 35
  • !

+

D> #@&

<aop:pointcut id="idempotentOperation"

expression= "SystemArchitecture.businessService() and @annotation(Idempotent)"/>

slide-36
SLIDE 36
  • !

✔ !"#

  • ✔ !
slide-37
SLIDE 37
  • !
  • "!"
  • !

"

  • "
  • ;'<'==><'

; .

  • !
slide-38
SLIDE 38
  • !

#

"&

slide-39
SLIDE 39
  • !

%/

slide-40
SLIDE 40
  • !

%/

  • *H
  • 4D

*H;

slide-41
SLIDE 41
  • !

%/0

D$ $D %

  • D :!

( # D

  • !:!

D

slide-42
SLIDE 42
  • !

12%/

M >@

slide-43
SLIDE 43
  • !

12%/

M 2#6++!75

' $+!?=NN=

slide-44
SLIDE 44
  • !
  • !

!

  • = =

D

  • K
slide-45
SLIDE 45

3'