Liferay Portal的Action中应用JNI
来源:互联网 发布:成品油批发价年度数据 编辑:程序博客网 时间:2024/05/27 09:44
因为Liferay Portal需要和别的基于C++的系统集成起来,所以开始琢磨着怎么在自己写的Action中加入Java Native Interface (JNI)。
1. 创建AjaxPollingAction.java。关于如何在Liferay系统的ext环境下增加自己定制的Action可参考前面的文章。
在这个action中需要读取来自于C++系统的数据,定义了一个native的readData。再载入库AjaxPollingDll。
package com.ext.portal.action;
public class AjaxPollingAction extends Action
{
private native double[] readData(String Name1, String Name2);
static {
System.loadLibrary("AjaxPollingDll");
}
......
}
2. 编译AjaxPollingAction.java并生成所需要的.h文件:com_ext_portal_action_AjaxPollingAction.h。
com_ext_portal_action_AjaxPollingAction.h
---------------------------------------------------------------
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_ext_portal_action_AjaxPolling */
#ifndef _Included_com_ext_portal_action_AjaxPolling
#define _Included_com_ext_portal_action_AjaxPolling
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_ext_portal_action_AjaxPolling
* Method: readLocationData
* Signature: (Ljava/lang/String;)[D
*/
JNIEXPORT jdoubleArray JNICALL Java_com_ext_portal_action_AjaxPollingAction_readData
(JNIEnv *, jobject, jstring, jstring);
#ifdef __cplusplus
}
#endif
#endif
javac -d d:/ AjaxPollingAction.java
javah -jni com.ext.portal.action.AjaxPollingAction
3. 在VC++中创建一个dll项目:AjaxPollingDll,将上面生成的.h文件加入。具体过程可参见前面有一篇关于JNI的文章。这里我选用的是release模式,听说是必须的,由于时间关系没有去尝试debug模式是否也可行。这里需要把java jdk的include目录和下面的win32目录包含进项目。
AjaxPollingAction.cpp
--------------------------------
#include "com_ext_portal_action_AjaxPollingAction.h"
JNIEXPORT jdoubleArray JNICALL Java_com_ext_portal_action_AjaxPollingAction_readData
(JNIEnv * env, jobject obj, jstring Name1, jstring Name2)
{
......
}
4. 将上面编译生成的dll文件(以及如果有引用到的其他dll文件)拷贝如windows/system32目录。这个地方有些迷惑,好像把dll文件放到别的地方都不行。
- Liferay Portal的Action中应用JNI
- Liferay Portal in Action 开发
- liferay-portal中卸载portlet
- Liferay中portal-model-hints.xml文件的作用
- liferay中portlet的action处理流程
- liferay 中portlet action的处理流程
- Liferay 的 portal 渲染过程
- Liferay Portal简单的demo
- Liferay Portal额外研究(五):对多分发命令Action的支持(方案一)
- Liferay Portal额外研究(五):对多分发命令Action的支持(方案一)
- liferay portal
- Liferay Portal中开发主题风格theme
- Liferay Portal中开发主题风格theme
- Liferay Portal中开发主题风格theme
- Liferay中Portal.properties常用配置参数
- Liferay中Portal.properties常用配置参数
- Liferay中Portal.properties常用配置参数
- LifeRay Portal 6学习笔记7:Liferay的一些常见问题
- Spring5 aop1
- 一些开源协议简介
- Ubuntu软件安装方法完全指南
- TCP/IP详解(1)
- 剪影_优秀与自省
- Liferay Portal的Action中应用JNI
- 身体的小秘密
- 将DataSet数据集导入CSV后缀文件中
- outlook添加CommandBar和CommandBarButton
- Silverlight,你应该知道的10件事
- Intel OpenMP
- Web Service“四长两短”
- 使用Telnet登录邮箱
- SQL按时间模糊查询