我有两个共享大量代码的JSF项目 - java类,xhtml文件,标记库,css和javascript文件等.我的开发环境/平台主要包括Eclipse,Ant,Perforce和Tomcat.
有没有人找到一种方法来创建和组织共享代码,以便公共代码可以保留在一组文件夹中?
Eclipse可以很容易地为java源添加外部文件夹,但不能满足其他文件类型.我很欣赏任何想法.
我试图custom url从我的java程序中调用一个,因此我使用了这样的东西:
URL myURL;
try {
myURL = new URL("CustomURI:");
URLConnection myURLConnection = myURL.openConnection();
myURLConnection.connect();
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我得到以下例外:
java.net.MalformedURLException:未知协议:来自java.net.URL的java.net.URL.(未知来源)中的CustomURI.(来自未知来源)位于com.demo.TestDemo的java.net.URL.(未知来源).主(TestDemo.java:14)
如果我URI从浏览器触发它然后它按预期工作但如果我尝试Java Program从那时调用它我得到上述异常.
编辑:
以下是我尝试的步骤(我肯定错过了一些东西,请告诉我):
第1步:添加自定义URI java.protocol.handler.pkgs
第2步:从URL触发自定义URI
码:
public class CustomURI {
public static void main(String[] args) {
try {
add("CustomURI:");
URL uri = new URL("CustomURI:");
URLConnection uc = uri.openConnection();
uc.connect();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void add( String handlerPackage ){
final String key = …Run Code Online (Sandbox Code Playgroud) 我有一个具有良好定义的界面的应用程序.它使用CDI来解析模块,(特别是它使用API接口上的Instance <>注入点来解析模块)并通过接口传回各种数据而没有问题.我故意将API和实现分开,并且模块仅从API继承以避免紧密耦合,并且应用程序仅通过运行时依赖性知道模块,并且通过API完成数据传递.应用程序在没有模块的情况下运行正常,只需将jar放入WEB-INF/lib文件夹并重新启动应用服务器即可添加.
我遇到的问题是我希望模块创建视图的一部分,因此我想以可移植的方式调用JSF组件,或者从模块中执行包含以获取它渲染它的观点.我已经解决了我想要调用的模块,并准备好了对模块接口的引用.我最初认为这样做的方法是做一个ui:include要求模块提供它的视图模板的位置,但我不知道如何以有意义的方式回答该查询,因为视图解析是从应用程序完成的root,而不是库根.
执行摘要是我不知道如何使用JSF为.xhtml(模板/组件)文件从应用程序跳到库.
使用CC会很好,但是如何在运行时指定我想要一个特定的CC实例,而不是将其硬编码到页面中?
我当然可以直接调用应用程序代码并要求它进行标记,但这似乎是非常强大的,一旦我有了标记,我就不确定如何告诉JSF来评估它.也就是说,我可以想象一个组件可以获取资源路径,获取标记并对其进行评估,返回完成的标记,我只是不知道如何实现它.
如果可能的话,我宁愿避免强制模块开发人员采用重型UIComponent方法,这意味着要么采用动态方式执行ui:include(或某些等效方法),要么采用动态方式调用CC.(我不介意在应用程序中编写UIComponent方法ONCE,如果这是使模块开发人员的生活更轻松的话)
关于我应该在哪里找出这个问题的任何建议?(如果我先找到答案,我会在这里发布答案)
是否有可能把JSF2 Facelets文件与普通的内容为JAR从内部如其他Web应用程序中使用<ui:composition template>,<ui:include src>,<cc:implementation>等?如果是,我怎样才能实现这一目标?是否需要一些额外的配置?
我正试图在多次战争之间共享一个错误页面(error.xhtml).它们都是一个大耳朵应用程序,并且都使用一个常见的jar库,我想把它放在这里.
错误页面应使用web.xml或更好的web-fragment.xml,并将声明为标准java ee错误页面.
实际EAR结构:
EAR
EJB1
EJB2
WAR1 (using CommonWeb.jar)
WAR2 (using CommonWeb.jar)
WAR3 (using CommonWeb.jar)
Run Code Online (Sandbox Code Playgroud)
只是将错误页面放在META-INF/resources下面将不起作用,因为它不是资源.
我想尽可能少地配置每个war文件.
我正在使用Glassfish 3.1,但我希望尽可能使用Java EE 6标准.