チェンジセット 283

差分発生行の前後
無視リスト:
コミット日時:
2008/04/17 17:44:53 (14 年前)
コミッタ:
shinomiya
ログメッセージ:

Webアプリケーションサーバ上で動作するように修正。
具体的には以下の2点を修正。

  • javassistのClassPool?にSOAPClientObjectを元にしたクラス検索パスを追加
  • 「JavaのStubインスタンス生成時のクラスローダ」と「jsToJavaBean()実行時のクラスローダ」を同じクラスローダを使うように修正。
ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • trunk/im-jssp/pom.xml

    r265 r283  
    6969                        <artifactId>axis2-jaxws</artifactId> 
    7070                        <version>1.3</version> 
    71                         <scope>runtime</scope> 
     71                        <scope>compile</scope> 
    7272                </dependency> 
    7373                <dependency> 
     
    7575                        <artifactId>axis2-adb-codegen</artifactId> 
    7676                        <version>1.3</version> 
    77                         <scope>provided</scope> 
     77                        <scope>compile</scope> 
    7878                </dependency>            
    7979                <dependency> 
     
    8181                        <artifactId>axis2-codegen</artifactId> 
    8282                        <version>1.3</version> 
    83                         <scope>provided</scope> 
     83                        <scope>compile</scope> 
    8484                </dependency> 
    8585                <dependency> 
     
    8787                        <artifactId>axis2-kernel</artifactId> 
    8888                        <version>1.3</version> 
    89                         <scope>provided</scope> 
     89                        <scope>compile</scope> 
    9090                </dependency> 
    9191                <dependency> 
    9292                        <groupId>javassist</groupId> 
    9393                        <artifactId>javassist</artifactId> 
    94                         <version>3.0</version> 
    95                         <scope>provided</scope> 
     94                        <version>3.6.0.GA</version> 
     95                        <scope>compile</scope> 
    9696                </dependency> 
    9797                <dependency> 
     
    9999                        <artifactId>js</artifactId> 
    100100                        <version>1.6R7</version> 
    101                         <scope>provided</scope> 
     101                        <scope>compile</scope> 
    102102                </dependency> 
    103103                <dependency> 
  • trunk/im-jssp/src/main/java/org/intra_mart/jssp/script/api/SOAPClientObject.java

    r278 r283  
    1111import java.io.PrintStream; 
    1212import java.io.Writer; 
     13import java.lang.reflect.Constructor; 
    1314import java.lang.reflect.Field; 
     15import java.lang.reflect.InvocationTargetException; 
    1416import java.lang.reflect.Method; 
    1517import java.lang.reflect.Modifier; 
     
    2224import java.util.WeakHashMap; 
    2325 
     26import javassist.ClassClassPath; 
    2427import javassist.ClassPool; 
    2528import javassist.CtClass; 
     
    225228         
    226229        /** 
     230         * @param classLoader 
     231         * @param stubClassName 
     232         * @param endpoint 
     233         * @return 
     234         * @throws ClassNotFoundException 
     235         * @throws SecurityException 
     236         * @throws NoSuchMethodException 
     237         * @throws IllegalArgumentException 
     238         * @throws InstantiationException 
     239         * @throws IllegalAccessException 
     240         * @throws InvocationTargetException 
     241         */ 
     242        public static Object newStubInstance(final ClassLoader classLoader,  
     243                                                                                 final String stubClassName,  
     244                                                                                 final String endpoint)  
     245                                                        throws ClassNotFoundException, SecurityException,  
     246                                                                   NoSuchMethodException, IllegalArgumentException,  
     247                                                                   InstantiationException, IllegalAccessException,  
     248                                                                   InvocationTargetException{ 
     249                 
     250                ClassLoader cl = (classLoader != null) ?  classLoader : getCurrentThreadClassLoader4SOAPClient(); 
     251                 
     252                Class stubClass = cl.loadClass(stubClassName); 
     253                if(endpoint == null){ 
     254                        return stubClass.newInstance(); 
     255                } 
     256                else{ 
     257                        Constructor stubConstructor = stubClass.getConstructor(String.class); 
     258                        return stubConstructor.newInstance(endpoint); 
     259                } 
     260        } 
     261         
     262        /** 
    227263         * @param arg 
    228264         */ 
     
    523559                        args[1] = "-c"; 
    524560                        args[2] = unix.toString(); 
    525                 _logger.debug("Compile Command(UNIX) -> {} {} {}", args); 
     561                _logger.debug("Compile Command(UNIX) -> {} {} {}", args); 
    526562                } 
    527563                else{ 
    528564                        args = argsList.toArray(new String[argsList.size()]); 
    529                 _logger.debug("Compile Command(Windows) -> {}", argsList); 
     565                _logger.debug("Compile Command(Windows) -> {}", argsList); 
    530566                } 
    531567 
    532568 
    533569                // コンパイル実行 
    534         _logger.info("Compile Stub(Java): {}{}{}", new Object[]{srcDir, File.separator, source}); 
    535         _logger.debug("Compile classpath -> '{}'", classpath); 
     570        _logger.info("Compile Stub(Java): {}{}{}", new Object[]{srcDir, File.separator, source}); 
     571        _logger.debug("Compile classpath -> '{}'", classpath); 
    536572        Runtime runtime = Runtime.getRuntime(); 
    537573             
     
    627663                source.append(" * This file was generated automatically on " + new Date())                                      .append(LINE_SEP); 
    628664                source.append(" */")                                                                                                                                            .append(LINE_SEP); 
     665                source.append("var wsdlUri     = \"" + wsdlUri + "\";")                                                                         .append(LINE_SEP); 
     666                source.append("var classLoader = " + code4ClassLoader)                                                                          .append(LINE_SEP); 
    629667                source.append(LINE_SEP); 
    630                 source.append("var wsdlUri = \"" + wsdlUri + "\";")                                                                                     .append(LINE_SEP); 
    631668                source.append("load('" + _jsPath4SOAPClientHelper + "');")                                                                      .append(LINE_SEP); 
    632669        } 
     
    638675                source.append(LINE_SEP); 
    639676                source.append("function init( targetEndpoint ) {")                                                                                      .append(LINE_SEP); 
    640                 source.append("    if( !isBlank(targetEndpoint) ) {")                                                                           .append(LINE_SEP); 
    641                 source.append("        this.stub = new Packages." + stubClassName + "( targetEndpoint );")      .append(LINE_SEP); 
    642                 source.append("    }")                                                                                                                                          .append(LINE_SEP); 
    643                 source.append("    else{")                                                                                                                                      .append(LINE_SEP); 
    644                 source.append("        this.stub = new Packages." + stubClassName + "();")                                      .append(LINE_SEP); 
    645                 source.append("    }")                                                                                                                                          .append(LINE_SEP); 
     677                source.append("    var endpoint = (targetEndpoint == undefined) ? null : targetEndpoint;")      .append(LINE_SEP); 
     678                source.append("    this.stub = " + name4SOAPClientObject); 
     679                source.append(                                                  ".newStubInstance(classLoader, "); 
     680                source.append(                                                                                  "\"" + stubClassName + "\", "); 
     681                source.append(                                                                                  "endpoint);")                                           .append(LINE_SEP); 
    646682                source.append("}")                                                                                                                                                      .append(LINE_SEP); 
    647683        } 
     
    729765                                String paramTypeName = operationParamType.getName(); 
    730766                                 
    731                                                 source.append("    var operationParam = new Packages." + paramTypeName + "();")                                               .append(LINE_SEP); 
    732                                                 source.append("    var classLoader    = " + code4ClassLoader)                                                                         .append(LINE_SEP); 
    733  
     767                                                source.append("    var clazz          = classLoader.loadClass(\"" + paramTypeName + "\");")                   .append(LINE_SEP); 
     768                                                source.append("    var operationParam = clazz.newInstance();")                                                                                .append(LINE_SEP); 
     769                                                 
    734770                                // WSDLより、Webサービスのパラメータクラスのプロパティ順を取得。 
    735771                                // (∵SOAPClient#オペレーション()に指定した引数の順序(=arguments オブジェクト)とあわせるため) 
     
    921957                source.append(LINE_SEP); 
    922958                source.append("    var str = \"\";")                                                                                                            .append(LINE_SEP); 
    923                 source.append("    var classLoader = " + code4ClassLoader)                                                                     .append(LINE_SEP); 
     959                source.append(LINE_SEP); 
    924960                source.append(     usage); // Usageを追加 
    925961                source.append(LINE_SEP); 
     
    10291065                         
    10301066                        ClassPool cp = ClassPool.getDefault(); 
     1067                        cp.insertClassPath(new ClassClassPath(SOAPClientObject.class)); 
    10311068                        CtClass class4codeGenerationEngine = cp.get("org.apache.axis2.wsdl.codegen.CodeGenerationEngine"); 
    10321069