我想从worklight适配器调用java类 [英] i want to call a java class from the worklight adapter

查看:70
本文介绍了我想从worklight适配器调用java类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已在此网址中跟踪此文档模块5.5 http ://www.ibm.com/developerworks/mobile/worklight/getting-started.html#authentication ftp://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v505/Module_05_5_-_Using_Java_in_Adapters.pdf

i have followed this document module 5.5 in this url "http://www.ibm.com/developerworks/mobile/worklight/getting-started.html#authentication" or ftp://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v505/Module_05_5_-_Using_Java_in_Adapters.pdf

和我的代码结构相同

server/java                        folder name
com.worklight.custonmode           package name
loginfunction.java                 java file inside com.worklight.custonmode package
login                              java method in class loginfunction

我从工作灯适配器调用了

and i have called from the worklight adapter as

function loginmodules(username, passwd) {   
    return {
        result : com.worklight.custonmode.loginfunction.login()
    };
}

当我打电话时收到这样的错误

when i am calling am getting the error like this as

 response [/apps/services/api/Light/common/query] success: /*-secure- {"responseID":"2","errors":["Ecma Error: TypeError: Cannot call property login in object [JavaPackage com.worklight.custonmode.loginfunction]. It is not a function, it is \"object\". 

(C%3A%5CUsers%5CADMIN%5CworkspaceM11%5CMobileClient%5Cadapters%5CAdapter / Adapter-impl.js#103)] ,isSuccessful:false,警告:[],info:[]} * /

(C%3A%5CUsers%5CADMIN%5CworkspaceM11%5CMobileClient%5Cadapters%5CAdapter/Adapter-impl.js#103)"],"isSuccessful":false,"warnings":[],"info":[]}*/

    worklight.js (line 1112)

    Procedure invocation error. Ecma Error: TypeError: Cannot call property login in object [JavaPackage com.worklight.custonmode.loginfunction]. It is not a function, it is "object". (C%3A%5CUsers%5CADMIN%5CworkspaceM11%5CMobileClient%5Cadapters%5CAdapter/Adapter-impl.js#103)

我在loginfunction.java中的登录功能

my login function in loginfunction.java

  public class loginfunction {

public static void login() {
    //============== Code to adapt to your own configuration =============//
    String server = "https://ibm-f4acjqe8c6p:9443/dfd";     // Set the Public URI of your RRC server
    String JTS_Server = "https://ibm-f4acjqe8c6p:9443/jts"; //Set the public URI of your JTS server
    String login = "Admin";                                 // Set the user login 
    String password = "Admin";                              // Set the associated password
    //============== -------------------------------------- =============//

    String rootServices = server + "/rootservices";
    String catalogXPath = "/rdf:Description/oslc_we:rweServiceProviders/@rdf:resource";
    String serviceProviderTitleXPath = "//oslc:ServiceProvider/dcterms:title";

    System.out.println(">> Example03: Print out the content of the Service Providers catalog");
    System.out.println("    - Root Services URI: "+rootServices);
    System.out.println("    - Service Providers catalog XPath expression: "+catalogXPath);
    System.out.println("    - Service Provider title XPath expression: "+serviceProviderTitleXPath);
    System.out.println("    - Login: "+login);
    System.out.println("    - Password: "+password);

    // Setup the HttClient
    DefaultHttpClient httpclient = new DefaultHttpClient();
    HttpUtils.setupLazySSLSupport(httpclient);

    // Setup the rootServices request
    HttpGet rootServiceDoc = new HttpGet(rootServices);
    rootServiceDoc.addHeader("Accept", "application/rdf+xml");
    rootServiceDoc.addHeader("OSLC-Core-Version", "2.0");

    try {
        // Request the Root Services document
        HttpResponse rootServicesResponse = HttpUtils.sendGetForSecureDocument(
                                                server, rootServiceDoc, login, password, httpclient,JTS_Server);

        if (rootServicesResponse.getStatusLine().getStatusCode() == 200) {
            // Define the XPath evaluation environment
            XPathFactory factory = XPathFactory.newInstance();
            XPath xpath = factory.newXPath();
            xpath.setNamespaceContext(
                    new NamespaceContextMap(new String[]
                            {   "rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
                                "oslc_we","http://open-services.net/xmlns/we/1.0/"}));

            // Parse the response body to retrieve the catalog URI
            InputSource source = new InputSource(rootServicesResponse.getEntity().getContent());
            Node attribute = (Node) (xpath.evaluate(catalogXPath, source, XPathConstants.NODE));
            String serviceProvidersCatalog = attribute.getTextContent();
            rootServicesResponse.getEntity().consumeContent();

            // Setup the catalog request
            HttpGet catalogDoc = new HttpGet(serviceProvidersCatalog);
            catalogDoc.addHeader("Accept", "application/xml");
            catalogDoc.addHeader("OSLC-Core-Version", "2.0");

            // Access to the Service Providers catalog
            HttpResponse catalogResponse = HttpUtils.sendGetForSecureDocument(
                                                        server, catalogDoc, login, password, httpclient,JTS_Server);
            if (catalogResponse.getStatusLine().getStatusCode() == 200) {
                // Define the XPath evaluation environment
                XPath xpath2 = factory.newXPath();
                xpath2.setNamespaceContext(
                        new NamespaceContextMap(new String[]
                                {   "oslc", "http://open-services.net/ns/core#",
                                    "dcterms","http://purl.org/dc/terms/"}));

                // Parse the response body to retrieve the Service Provider
                source = new InputSource(catalogResponse.getEntity().getContent());
                NodeList titleNodes = (NodeList) (xpath2.evaluate(serviceProviderTitleXPath, source, XPathConstants.NODESET));

                // Print out the title of each Service Provider
                int length = titleNodes.getLength();
                System.out.println(">> Project Areas:");
                for (int i = 0; i < length; i++) {
                    System.out.println(">> \t - "+ titleNodes.item(i).getTextContent());
                }
            }
        }
        rootServicesResponse.getEntity().consumeContent();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (XPathExpressionException e) {
        e.printStackTrace();
    } catch (InvalidCredentialsException e) {
        e.printStackTrace();
    } finally {
        // Shutdown the HTTP connection
        httpclient.getConnectionManager().shutdown();
    }
}

}

推荐答案

我只想出了这个。有趣的是,每个人都对这个问题保持沉默两个月。对我而言,它根本不是很明显,因为它适用于某些项目,而其他项目则不然。机器也是如此。它可以在一个地方工作,但不能在另一个地方工作(如果你不知道发生了什么)。

I just figured this out. It's funny how everyone went silent on this issue for two months. For me it wasn't obvious at all because it works in some projects and simply doesn't in others. The same is true for machines. It'll work one place, but not another (if you're not aware of what's going on).

检查.project文件并确保它是正确的buildCommand标签。

Check your .project file and make sure it has the right buildCommand tags in it.

<buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.eclipse.wst.common.project.facet.core.builder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>com.worklight.studio.plugin.WorklightProjectBuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.eclipse.wst.validation.validationbuilder</name>
        <arguments>
        </arguments>
    </buildCommand>

阅读更多:从Worklight适配器调用Java类的ECMA TypeError

Read more at: ECMA TypeError calling Java class from Worklight adapter

这篇关于我想从worklight适配器调用java类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆