Java webapp媒体目录

时间:2012-04-19 07:06:43

标签: java image http glassfish

我正在开发一个Java EE项目,该项目提供了一个servlet,可以将特定用户的大量图像(或公共文件)存储到glassfish服务器中。 我想知道是否有标准目录将文件保存到标准的Web编程中。

例如,我有三个用户想要上传他们的文件,我可以将他们保存到服务器中吗?

1 个答案:

答案 0 :(得分:0)

没有任何标准目录。我建议你在服务器上为每个用户创建目录。例如:用户注册,一些数据进入数据库,并且还创建了该用户的目录。比这个用户可以将任何文件上传到他自己的目录。

P.S您可以在服务器上的任何位置创建目录,然后在服务器的JNDI资源中配置目录路径,以便在应用程序中查看。

您必须创建PropertiesObjectFactory类来处理java.util.Porperties的JNDI属性(如果您使用的是glassfish 2)。或者yuo也可以编写自定义的ObjectFactory。 Glassfish 3已经具备此功能。它设置为:org.glassfish.resources.custom.factory.PropertiesFactory。

  1. 在服务器上的某处创建目录。例如:/ server / glassfish / users
  2. 打开glassfish管理控制台并导航至:Resources - > JNDI - >自定义资源,单击“新建”。提供JNDI名称,例如:jndi / users_directories,选择资源类型“java.util.Properties”,指定Factory类:org.glassfish.resources.custom.factory.PropertiesFactory,然后单击“添加属性”,指定例如:{{1}的名称并在值列中复制您的目录路径。在这种情况下:users.directories。单击“确定”即可。

  3. 重新启动应用程序服务器。

  4. 查看您的申请表:

  5. /server/glassfish/users 在应用程序中调用此方法时,请提供在应用程序服务器 public Properties getProperties(String jndiName) { Properties properties = null; try { InitialContext context = new InitialContext(); properties = (Properties) context.lookup(jndiName); context.close(); } catch (NamingException e) { LOGGER.error("Naming error occurred while initializing properties from JNDI.", e); return null; } return properties; } 中配置的JNDI名称。如果您在deploymet描述符中映射了资源,则必须使用:java:comp / env / jndi / users_directories。

    如果你想用弹簧做同样的事情:

    : jndi/users_directories

    或者,如果您使用的是glassfish 2,则创建一个自定义的PropertiesObjectFactory类:

    <jee:jndi-lookup id="usersDirectories"
                     jndi-name="jndi/users_directories"/>
    

    创建此类的.jar文件并将其放入服务器全局库目录。为您的JNDI资源提供此工厂类,重新启动服务器,您可以使用相同的查找,如上所述。