2014-12-26 39 views
3

我從CF調用一個jar文件。內部CF我已經成功創建了一個Java類對象。當我打算打電話給我的功能時,它會產生以下錯誤:java.security.AccessControlException:訪問被拒絕(「java.net.SocketPermission」「localhost:10648」「listen,resolve」)

java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:10648" "listen,resolve")

我該如何克服此異常?我已將代碼部署在CF 10服務器中。這裏是我的login.cfm文件代碼:

<cfsetting requesttimeout="1000000"> 

<!---Setting phantomJS path start---> 
<cfset phantompath = #ExpandPath("./")# & "phantomjs\phantomjs.exe">  
<cfoutput>#phantompath#</cfoutput> 

<!---Setting phantomJS path ends---> 
<cfset sessionCookies=""> 

<!---Script for setting JAR file and creating java class object---> 
<cfscript> 
    paths = arrayNew(1); 
    paths[1] = expandPath("CFDevshop\lib\Counsel_Cookies_Phantom.jar"); 
    writeDump(paths); 
    loader = createObject("component", "javaloader.JavaLoader").init(paths); 
    writedump(loader); 
    classObject = loader.create("counsel_cookies.Counsel_Cookies").init(); 
    writedump(classObject); 

    try{ 
     sessiondata=classObject.getSessionCookies ("XXX","XXX","https://paser.login.csologin/login.jsf","phantomjs.exe"); 
    } 
    catch(Any e) { 
     WriteOutput("<p>An Expression exception was thrown.</p>"); 
     WriteOutput("<p>#e.Message#</p>"); 
    } 
    writedump(sessiondata);     
</cfscript> 

這裏是我的Java代碼:

public String getSessionCookies(String user, String pass,String loginUrl,String phantomPath) { 
     StringBuilder builder=new StringBuilder();   
    try{    

     DesiredCapabilities caps = new DesiredCapabilities(); 
     caps.setJavascriptEnabled(true);// not really needed: JS enabled by default 
     caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, phantomPath); 
     driver = new PhantomJSDriver(caps); 
     driver.get(loginUrl); 
     System.out.println(driver.getTitle()); 
     driver.findElement(By.id("login:loginName")).sendKeys(user); 
     driver.findElement(By.id("login:password")).sendKeys(pass); 
     waitForJQueryProcessing(driver, 5); 
     driver.findElement(By.xpath("/html/body/div[3]/div/div[1]/div[1]/div[15]/div[2]/form/div[2]/button[1]")).click(); 
     Thread.sleep(10000); 

     Set<org.openqa.selenium.Cookie> allCookies=driver.manage().getCookies(); 
     builder.append(" : Thakre2"); 
     for (org.openqa.selenium.Cookie loadedCookie : allCookies) { 
      builder.append(String.format("%s->%s, ", loadedCookie.getName(),loadedCookie.getValue())); 
        //System.out.println(String.format("%s->%s, ", loadedCookie.getName(),loadedCookie.getValue())); 
     }   

    } catch(Exception e){ 
     writeFile(e.toString(),logfilepath); 
    } 

    return builder.toString(); 
} 

請提供您的建議。我該如何解決這個異常?

+0

究竟是什麼線引發錯誤?請發佈*完整*錯誤消息和完整的堆棧跟蹤。就像我說的[在你的其他線程](http://stackoverflow.com/questions/27561662/how-to-get-java-class-in-cf)它似乎並不像你發佈的實際代碼生成的錯誤你已經描述了...例如,你的java方法期望六(6),但你的CF代碼只傳入五(5),所以你應該得到一個「方法未發現錯誤」。除非*之前發生錯誤,否則請致電。但是我們需要看到你的*實際*代碼和完整的錯誤來弄清楚。 – Leigh

+0

..當上面的方法直接在java中測試時,上面的方法是否工作? – Leigh

+0

@Leigh:是的,上面的java代碼很好,在java中工作。實際上我使用Java代碼中的phantomjs,它從java代碼執行phantomjs.exe並將結果返回給CF文件。 –

回答

0

我是猜測它是一個權限問題。編輯client.policy或server.policy以授予讀寫權限。

更多here

相關問題