2014年11月28日 星期五

JAX-WS 的大小事

最近這一個星期到客戶那解Web Service的問題,在這邊記錄一下查到的相關資訊...
教學的話有空再來寫....
這邊提供幾個找到的資料注意事項


AXIS2
這次用裡面的wsdl2java 讀取wsdl的內容來產生相關所需要的檔案
注意事項:-g 這個參數很重要,有這個才有辦法根據WSDL產生完整的Class

Rampart
用來在SOAP message中加上Secrity 相關的內容

IBM Web Service系列文章
裡面的內容其實都說明的滿詳細的...有需要的朋友可以參考一下

keytool
主要是用來處理憑證或是金鑰的Java Tool,主要是將相關的內容存放到JKS的管理庫中...

其他部分
透過Rampart可以很方便的對出去的SOAP Message的Header來處理Secrity相關的問題...
不過對方回來的訊息如果是Error 相關的話,就不會在SOAP 的Header上加上Secrity相關的回應,結果得到的Exception都會說Header不完整或是沒有權限之類的回應....可透過fidder來取得request和response來確定得到的SOAPMessage來確認得到的封包是否正確

如果對方提供的不是https的話,可用eclipse提供的TCP moniter就夠用了....(很不巧的這次對方提供的是https= =)

還有,可將Rampart 的.mar改為zip檔後移除model.xml檔中的的部分,讓得到response時,就算沒有加上安全相關的header也能正常的收進來...
model.xml檔如果沒有修改,Rampart預設出去的request會加上security token…回來的response也會做相關的驗證…但如果對方回應的response,header沒加的話就會無法驗證…Message也會因為被rampart包起來說是驗證錯誤或沒權限無法解析…然後就不知道是否有正常回應…



2014年11月17日 星期一

Tiles3.0.5 中的ViewPreparer在Spring MVC的使用

之前在找能從DB中抓資料出來組成網站的主選單的辦法…
先看了tiles管網上的用法 也找到好幾個用Tiles View Preparer+Spring MVC的辦法…但發現好像用的Tiles的版本是不太一樣的…原本很開心的以為有找到解法…但實做了以後才發現跟現有的method上有差異…也試了好一段時間…最後才確定用法…在這邊說明一下:

環境:
Tiles 3.0.5
Spring 4.1.1

在Spring 的bean file中的TilesConfigurer 加上preparerFactoryClass,相關設定如下:

 
    
        
            
                /WEB-INF/defaulttemplate.xml
                        
        
        
     

讓TilesConfigurer可以知道我們要使用Preparer的class
再來就是將navigation的部分拉出來,並加上我們寫好的NavigationViewPreparer ViewPreparer API
 

    
        
        
        
        
    
    
    


NavigationViewPreparer 的內容如下:
 
package syscom.web.controllers.preparer;

public class NavigationViewPreparer implements ViewPreparer{
 
 @Autowired 
 private INavigationService navigationServices;

 @Override
 public void execute(Request tilesContext, AttributeContext attributeContext) {
  attributeContext.putAttribute("navigationlist", new Attribute(navigationServices.getAllNavigation()));
 }

}

這邊要說明一個比較特別的地方…
用上面的putAttribute放入的部分,是無法透過${}取出Attribute的,需透過tags-tiles-extras來取得tiles相關的Attribute...
 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ taglib uri="http://tiles.apache.org/tags-tiles-extras" prefix="tilesx" %>


    
                 
  • ${nav.title}

  • tilesx:useAttribute的用法

    2014年11月7日 星期五

    Sublime text 2

    教學
    http://net.tutsplus.com/articles/news/perfect-workflow-in-sublime-text-free-course/
    教學內的影片
    http://www.youtube.com/watch?v=5AV9zJH2n_Y&list=PLmJpVU-TdmVtTLooKvX3jcrOziPjlWrD4

    [Plugin]
    先裝
    Package Control
    再裝透過Package Control裝其他的Plugin

    EasyMotion
    BracketHighlighter
    SideBarEnhancements
    SublimeLinter
    gist
    git



    [config]

    // 把 tab 換空白
    "translate_tabs_to_spaces": true,
    
    // 高亮所在行
    "highlight_line": true,
    
    // 存檔時移除多餘的空白
    "trim_trailing_white_space_on_save": true,

    在Maven中使用ProGuard plugin的方法

    設定Maven 的plug-in如下:

     
       
                 com.github.wvengen
                 proguard-maven-plugin
                 2.0.6
                 
                     
                         net.sf.proguard
                         proguard-base
                         5.1
                     
                 
                 
                    
                        package
                        proguard
                    
                 
                 
                     5.1            
                     
                         
                          
                         
                      
                     
                     
                         ${java.home}/lib/rt.jar
                         ${java.home}/lib/jsse.jar
                     
                 
             
    
    如此一來,做出來的jar檔都會被混淆(obfuscator)
    可以減少從class中去猜出相關method內的做法…
    但有心人事還是有機會被反解回來喔…

    原來在Android sdk2.3以後就有將proguard加入其中了

    Reference:
    Pro Guard
    Progard maven plugin