小编Pet*_*ich的帖子

使用java.nio.Files更改Linux下的文件所有者组

我有一台Linux服务器,我在Java上为我服务器上的多个网站运行图像大小调整作业.网站文件归不同的OS用户/组所有.新创建的缩略图/预览由运行调整大小作业的用户拥有.现在,我正在调整如何在我的调整大小程序中更改新创建的预览/缩略图的文件所有者,并发现了这个:

java.nio.file.Files.setOwner(Path path, UserPrincipal owner);
Run Code Online (Sandbox Code Playgroud)

如果它是Windows,这将真正解决我的问题,但由于Linux文件有一个用户和一个组作为所有者我有点麻烦.不幸的是,给定的方法似乎只改变了文件的用户所有权.组所有权保留在运行Java调整大小作业的用户组中.

这些网站由不同的群组拥有,因此将我的调整大小作业用户添加到一个群组是不可取的.我还想避免系统调用ProcessBuilder和执行chown我的文件.

我需要指出创建的文件(预览/缩略图)可以通过网站访问,更改组所有权并不是关键任务,但我希望它尽可能干净.

有关如何仅使用Java更改Linux中文件的组所有权的任何建议?

java linux permissions file

14
推荐指数
2
解决办法
2万
查看次数

在Tomcat中执行shell命令

所以我有以下问题:我在Linux上的Tomcat7服务器内运行了一个Web服务.但是,Web服务必须执行一些命令(主要是文件操作,如复制和挂载).复制我已经用java.nio替换了,但我认为没有替代品mount.

所以我试图从我的Tomcat Java进程中执行shell命令.不幸的是它没有执行我的命令.我以前在Java中实现了shell命令的执行.所以我的代码应该是正确的:

Process pr = Runtime.getRuntime().exec("mount -o loop -t iso9660 <myimage> <mymountpoint>");
pr.waitFor();
Run Code Online (Sandbox Code Playgroud)

<myimage>并且<mymountpoint>是绝对路径,所以也没有问题.

  • 我调试了我的命令,并且在控制台上执行时它们正在工作.
  • 我试过发送其他命令.简单的命令,如idpwd正在工作!
  • 我尝试过使用过/bin/bash -c "<command>",但是没用.
  • 我已经尝试执行一个shell脚本,它执行命令,但是没有用.
  • 我已经尝试在我的命令中逃避空间,但是没有用.

所以我挖得更深,现在我怀疑一些Tomcat安全策略(Sandbox?),这阻止我执行命令.由于安全性对我来说没有问题(它是一个内部系统,与外部世界完全隔离),我尝试了一个黑客,它最近变得非常流行:

System.setSecurityManager(null);
Run Code Online (Sandbox Code Playgroud)

这也不起作用.我在RHEL6上使用Java7和Tomcat7.Tomcat7刚刚被提取出来!我在/ etc/..或/ opt/tomcat /之外的任何其他文件夹中没有任何文件,我从Tomcat主页中提取了zip.我在/ opt/tomcat/conf文件夹中搜索了安全设置,但我找到的只是文件catalina.policy,它似乎不能为shell命令设置一些安全级别.

有任何想法吗?

java security shell tomcat command

6
推荐指数
2
解决办法
2万
查看次数

通过JaxB JXC为XSD序列生成数组

我有一个XSD描述了一些复杂类型的序列,例如

<xs:complexType name="Catalog">
  <xs:sequence>
    <xs:element name="Category" minOccurs="0" maxOccurs="unbounded">
      <xs:complexType>
        <xs:sequence>
          <xs:element type="xs:string" name="ParentCategoryIDRef"/>
          <xs:element type="xs:string" name="Method"/>
        </xs:sequence>
      <xs:complexType>
    </xs:element>
  </xs:sequence>
<xs:complexType>
Run Code Online (Sandbox Code Playgroud)

现在,当我使用JaxBs XJC将其转换为Java类时,它将java.util.List在我的Catalog类中生成一个字段和getter/setter Category.

但是,在使用java2wsdl的Axis2 Web服务中使用它需要的是Arrays之类的Category[].

我对JaxB绑定有点熟悉,并且已经尝试使用以下方法指定集合类型:

<jaxb:property collectionType="Category[]"/>
Run Code Online (Sandbox Code Playgroud)

导致代码无效,因为它仍然使用a java.util.List,但带有构造函数new Category[]<Category>.

当然,我总是可以在生成后编辑生成的代码,但是当我尝试重新生成代码时,这会导致问题.

我现在得到的是:

public class Catalog {
  @XmlElement(name = "Category")
  protected List<Category> category;
}
Run Code Online (Sandbox Code Playgroud)

我想要的是:

public class Catalog {
  @XmlElement(name = "Category")
  protected Category[] category;
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我目前正在使用XJC 2.2.6和Axis2 1.6.2.

java xsd axis2 jaxb xjc

5
推荐指数
1
解决办法
1883
查看次数

scp上的管道错误

我可以直接进入我的ubuntu盒子,我已经scp将我的应用程序的da版本放到了服务器上,但是当我运行时

scp MaryBaked.tar.gz root@marybakedpdx.com:/home/marybakedpdx

甚至

scp MaryBaked.tar.gz root@marybakedpdx.com:~

scp的进度上升到81%,然后过程说stalled,我得到了

仪式失败:管道破裂失去连接

编辑

root @marybakedpdx:/ home/marybakedpdx #df -T

Filesystem     Type     1K-blocks    Used Available Use% Mounted on
/dev/vda1      ext4      30830588 2906508  26334944  10% /
none           tmpfs            4       0         4   0% /sys/fs/cgroup
udev           devtmpfs    498088       4    498084   1% /dev
tmpfs          tmpfs       101788     356    101432   1% /run
none           tmpfs         5120       0      5120   0% /run/lock
none           tmpfs       508940       0    508940   0% /run/shm
none           tmpfs       102400       0    102400   0% /run/user
Run Code Online (Sandbox Code Playgroud)

ssh ubuntu

3
推荐指数
3
解决办法
7979
查看次数

Google Chart API:更改悬停图例上的颜色

所以我有一个ColumnChart,其中一个内置功能是你可以将鼠标悬停在图表图例中的一个项目(所谓的类别)上,并在图表中的相应列周围找到一些高亮边框.

现在我的图表中有很多列和类别,很难看到突出显示的系列/类别,因为默认行为只是在列周围显示1px灰色边框.我的列只有几个像素的宽度,我仍然需要区分10个不同的类别(=颜色).因此,选择非常浅的颜色(边框很容易被发现)是不可取的.我发现无法改变:

  1. 高光边框的样式(主要是颜色)
  2. 在图例中选择各自类别时的列颜色(填充颜色).

是否有一些属性可以传递给draw()我的图表调用以更改突出显示?我是否必须手动覆盖某些事件/方法?

非常感谢帮助!

javascript css svg google-api google-visualization

2
推荐指数
1
解决办法
3940
查看次数

C3图表显示负y标签

我正在使用C3图表库,我指定了一个显示货币价值的图表.金钱价值都是>= 0.

现在,如果我的图形值介于15.000和20.000之间,则y轴仅显示粗略的域[13.000 - 22.000].

相反,我希望它展示的那个例子[0 - 22.000].

我的想法是使用axis: { y: { min : 0 }}几乎起作用的财产.现在我的问题是0是x轴上方几个像素,这意味着根据比例我当然得到类似的东西[-2.000 - 22.000].

我可以以某种方式强制完全避免负值吗?

c3.generate({
    ...
    axis : {
        y : {
            tick : {
                format: d3.format("$,")
            },
            min : 0
        },
        ...         
    }
});
Run Code Online (Sandbox Code Playgroud)

d3.js c3.js

1
推荐指数
1
解决办法
2443
查看次数