初识jruby之 在tomcat上部署jruby on rails

JRuby+Warbler将Rails打包为WAR部署到Tomcat实战 WAR包是Java Web应用的标准部署单元,基于Servlet规范实现跨容器可移植性;其核心原理是将应用代码、依赖与配置封装为符合WEB-INF结构的ZIP归档,由Servlet容器加载并管理生命周期。这种打包方式赋予了技术整合以强运维一致性、统一监控能力和企业级安全治理基础。在混合技术栈场景中,JRuby作为Ruby语言的JVM实现,配合Warbler工具,可将Rails应用编译为标准WAR包,从而无缝嵌入Tomcat等Java EE容器——既复用现有Java运维体系(如JVM调优、JNDI数据源、lo 阅读详情

1. prerequesite

       假定部署的sever上已经安装好了Java环境和mysql数据库(因为这里我将以mysql为例)。并且,这里为了和前面几篇博文保持一致,还是在windows上进行部署,实际在linux上部署的节奏也差不多了,即便遇到问题,google is ready for you.

2. 安装配置Apache Tomcat

     首先,在 Apache Tomcat网站上下载tomcat压缩包,目前的版本是7.0。下载完成后解压缩,如解压到C:\,解压缩后目录结构如图:

    进入其中bin目录,并以管理员身份运行startup.bat批处理文件启动tomcat,tomcat默认端口为8080,所以,在浏览器中访问http://localhost:8080,如果出现图示页面说明tomcat安装配置正确。

3. 下载安装jruby

     安装jruby在前一篇博文讲解较细,这里不再赘述。
     安装必要的JDBC。
jruby -S gem install activerecord-jdbcmysql-adapter -v 1.3.0.beta2

     如果要将jruby on rails工程打包为war发布到tomcat上,就必须要用到 warbler Gem:
 jruby -S gem install warbler

4. 打包jruby on rails工程

     首先确认database.yml文件production环境配置正确:
production:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: demo_production
  username: user
  password: password
  host: localhost
  port: 3306

    配置正确的production数据库,及其用户密码。
   在数据库中创建production数据库demo_production,并且赋予用户user对该数据库的完全权限。
   然后开始打包工程,在rails app根目录下执行:
jruby -S warble

    该命令会在工程根目录下生成一个war文件,如demo.war,该war会将必要的gem打包进去,使得我们能够像普通java工程war文件那样部署到tomcat中。

5. 部署war

    将该war复制到tomcat的webapps目录下,等待大约几秒钟,tomcat会自动释放文件完成部署。
   最后一步,进入tomcat释放的文件夹demo中,生成数据库schema:
C:\apache-tomcat-7.0.35\webapps\demo>jruby -S rake db:migrate RAILS_ENV="production"

  现在可以访问http://localhost:8080/demo,可以看到rails app的首页了。
JRuby+Rails在Tomcat 7上的WAR部署实战指南 WAR包是Java Web应用的标准部署单元,其本质是遵循Servlet规范的可执行归档,依赖WebappClassLoader实现类隔离与生命周期管理。在传统Java EE环境中,将Ruby on Rails通过JRuby编译为WAR包并运行于Tomcat 7,核心在于让Rack应用深度融入Servlet容器的初始化流程——即由ServletContextListener启动JRuby运行时,再经RackFilter接管HTTP请求。这种方案的技术价值在于复用现有JVM生态:共享线程池、JNDI数据源、J 阅读详情

相关推荐

EGO_Plannerv2代码学习(一):栅格建图之V1 V2的区别

最近在尝试将高飞老师的集群规划器部署到真实无人机上跑一下,开这个新帖记录下学习过程中的问题和想法。

qq_41069236的博客 5752

JRTPLIB使用实例

这几天在看关于JRTPLIB方面的东西。在网上看了不少文章,其中有很大部分使用的JRTPLIB版本在3.0以下。在网上下载了一个JRTPLIB-3.7的库,发现里面的函数接口做了一些修改。现奉上一篇基于JRTPLIB-3.7的网络语音传送实例,希望有兴趣的朋友一起参详研究。                                                           

chuckGao的专栏 1万+

STM32 IAP跳转后APP卡死?别慌,手把手教你修复HAL_RCC_OscConfig时钟配置冲突

本文深入分析了STM32 IAP跳转后APP在HAL_RCC_OscConfig函数中卡死的问题,揭示了PLL时钟配置冲突的根本原因。通过详细的代码示例和分步解决方案,指导开发者正确处理STM32F1/F4系列的时钟系统二次初始化问题,确保IAP+APP架构的稳定运行。

weixin_28685287的博客 365

JRuby On Rails安装配置详解

<br />最近安装了Jruby On Rails,发现网上虽然有很多资料可以参考,但是由于各种组件的不断更新,很多资料已经过时,容易产生误导,在这里介绍一下我个人的安装经过,供大家参考. <br />首先是安装环境,不同的软件版本可能导致不同的安装结果.我使用的环境是: <br />JDK------------------1.6.0_06 <br />TOMCAT--------------6.0.16 <br />MYSQL---------------5.0.22 <br />JRUBY------

司建伟的专栏 1146

用Logisim搞定华科计组实验:单总线CPU设计从微程序到硬布线的保姆级通关攻略

本文详细介绍了如何使用Logisim完成华中科技大学计算机组成原理实验中的单总线CPU设计,涵盖从微程序控制器到硬布线控制器的完整实现过程。通过MIPS指令译码器设计、微程序控制原理、状态机实现等关键步骤的保姆级教程,帮助学生掌握CPU设计的核心技能,并提供Educoder平台提交与调试的实用技巧。

weixin_30897233的博客 476

Unity类银河恶魔城学习记录1-10 PlayerWallJump源代码 P37

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考

Homura_的博客 1378

JRuby1.5.1下运行Rails2.2.2应用

    JRuby下运行Rails应用 最近要把我的一个RoR项目卖给客户,为了进行产权保护,研究了一下JRuby的打包,记录如下 下载/安装JRuby JRuby 下载地址 http://jruby.org/download下载Windows版本,然后安装到C盘下 安装的时候自动设置PATH,方便不少.运行 jruby -v 验证安装成功安装Rails 2.2.2jruby -S gem install rails -v 2.2.2安装JDBC驱动JDBC jruby -S gem install

AIHUA的专栏 1261

PPPoE上网配置不求人:华为路由器命令行操作指南(2023最新版)

本文提供2023年最新的华为路由器PPPoE上网配置命令行操作指南。通过详细的步骤讲解,从连接设备、创建拨号接口、绑定PPPoE客户端到配置内网与NAT,手把手教你完成配置,并附有验证排错方法,助你轻松实现稳定上网。

s4t5u6v的博客 679

Mac OS X上安装JRuby on Rails和sqlite3

<br />项目开发从Ruby换成了JRuby,于是在自己的Mac上安装JRuby和Rails。过程大同小异,不过有一些稍微值得注意的地方。<br />我的系统是Mac OS X 10.5.5,安装JRuby 1.1.6,开发使用Sqlite3。<br />0. 准备 <br />已经安装JDK 5或以上版本 <br />已经安装Ant<br />(其实Mac上已经装好了)1. 安装JRuby <br />1.1安装JRuby <br />下载 ,解压缩后把目录jruby-1.1.6放到到合适的地

司建伟的专栏 1827

【大模型】大模型知识蒸馏 综述解读(Knowledge Distillation of Large Language Models)

知识蒸馏的(论文)方法总结。归纳了通过数据(如指令、对话、多模态)和训练方法(SFT、RL、数据增强),将复杂技能(如对齐、工具使用、多模态)蒸馏到开源模型的核心框架,附典型模型示例(如Alpaca、LLaVA)。

songxia928_928的博客 4335

uniapp - 实现手机端H5网页直播功能效果,拿到后端推流地址或播放资源后进行前端的流畅播放和画面展示功能,uniapp实时推流/拉流直播系统详细教程(提供完整示例代码,一键复制开箱即用!)

uniapp,h5网页,手机端H5网页,uniapp h5直播功能页面,uniapp直播实时推送显示,uniapp h5直播怎么做,怎么使用uniapp去实现移动端手机H5直播,h5 vue+uniapp怎么做直播,uniapp中使用videojs构建H5直播播放器,uniappH5端怎么实现直播推流,uniapp如何实现直播,直播聊天功能,h5平台端直播用什么插件,uniapp手机网页直播用什么组件插件播放器,uniapp手机H5直播播放器详细教程,直播项目,怎么使用vue+uniapp怎么做H5实时直播

✅ 精选推荐文章 8792

初识jruby之 安装配置jruby on rails

1. prerequesite       假设你已经安装好了jruby,并且使用的jdk最好是1.7。 2. 安装rails     安装rails4.0.0: C:\>jruby -S gem install rails -V    查看安装的rails版本: C:\>jruby -S rails -v Rails 4.0.0 3. 新建一个rails Apps C:\>j

压碎起重机 2372

大数据架构中的数据治理:元数据管理与数据血缘追踪实践

本文将聚焦大数据架构中数据治理的两大核心支柱——元数据管理与数据血缘追踪元数据管理的目标、类型与实施步骤(从需求分析到工具落地);数据血缘追踪的技术实现(静态解析、动态捕获、混合方案)与应用场景;如何将两者结合,构建完整的数据治理体系,并通过真实案例展示落地效果。元数据管理:定义了业务/技术/操作元数据,讲解了工具选型(如Apache Atlas)、采集(Hook/API)、存储(关系库+图数据库)、应用(数据发现、质量监控);数据血缘追踪。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 868

Windows下JRuby on Rails搭建项目&使用Tomcat部署

因为使用的JRuby版本为1.7.9,版本较新,所以如果参考网上的部署教程会出现很多的问题,经过摸索找到了一种使用Tomcat来部署JROR的方法。   1.首先下载JRuby,版本号1.7.9,Windows下直接安装,安装完毕后执行 JRuby –v 如果显示版本号,说明安装正确。   2.安装Rails,执行命令JRuby –S gem install rails(或者Jgem i

韦恩的专栏 2229

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Jruby On Rails 的安装及部署实践

Jruby On Rails 的安装及部署实践 Jruby On Rails 的安装及部署实践 - - ITeye技术网站Jruby On Rails 的安装及部署实践 RailsjrubyActiveRecordJDBCTomcat 最近安装了Jruby ...

220

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Tomcat与Ruby on Rails整合:Web框架部署方案终极指南

Tomcat与Ruby on Rails整合提供了一种强大的Web应用部署方案,让Java生态的稳定性与Rails的高效开发完美结合。这种架构整合不仅提高了系统的可扩展性,还为开发者提供了更灵活的部署选择。 ## 为什么需要Tomcat与Rails整合? 在当今多技术栈并存的开发环境中,企业往往需要将不同的Web框架整合在一起。Tomcat作为成熟的Java Web服务器,而Ruby on R

gitblog_00527的博客 700

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.youkuaiyun.com/topmvp - topmvpDiscover how JRuby on Rails can be used to create web applications faster and more efficiently while still ta

TopMVP 679

将jruby on rails 开发的应用部署到tomcat

环境说明windows XPjdk 6u12jruby 1.2.0rails 2.2.2netbeans 6.5.1tomcat 5.5mysql 5升级到jruby 1.2.0<br />jruby采用的版本并非netbeans自带的1.1.4,原因是rails 2.2.2需要gem版本为1.3,而jruby 1.1.4自带的gem版本是1.2,虽然之前我的第一篇文章里面介绍了如何将jruby gem版本升级,但是在部署的时候总是不成功,系统仍然认为gem版本为1.2,无奈之下只好采用jruby

司建伟的专栏 2021

如何在tomcat上配置jruby on rails

如何在tomcat上配置jruby on rails 如何在tomcat上配置jruby on rails - emerald0106的专栏 - 博客频道 - youkuaiyun.com如何在tomcat上配置jruby on rails本文详细讲解了如何在tomcat上配...

110

Windows下JRuby on Rails部署方案

显然,在Windows下面进行Rails的部署不是最佳的解决方案。 但是,做过项目的人都清楚,很多时候,我们无法自由的选择应用部署所在的环境。其中最常见的场景是下面两个:   客户方有严格的IT管理政策,我们除了遵守,别无选择。 我们不得不将应用部署于一台共享的服务器上面,该服务器上面同时运行着多个其他应用。 遇到这样的情况,我们不得不考虑如何在Windows下面部署Rails应用。...

redouble的专栏 439

ruby on rails_宣布:使用新的HttpPlatformHandler在IIS8(或其他任何工具)上运行Ruby on Rails

For years there's been numerous hacks and ways to get Ruby on Rails to run on IIS. There's also ways to get Java via Tomcat or Jetty, Go, and other languages and environments to run as well. There's w...

cunfuteng7334的博客 566
上一篇: 初识jruby之 安装配置jruby on rails
下一篇: rails-sidekiq
qjpcpu
博客等级 码龄15年 59粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值