2009-04-03 10 views
1

私は現在、SpringとOSGiを研究しており、Pro Spring Dynamic Modules for OSGiの2つの例を使って作業しています。ビューリゾルバのように構成されてJasper in Equinox - jstl core uriを解決しない

@Controller 
public class HelloWorldController { 
    private HelloWorldService helloWorldService; 

    @RequestMapping(method = RequestMethod.GET) 
    @ModelAttribute("helloworld") 
    public HelloWorld home() { 
     return this.helloWorldService.find(); 
    } 

    // injected in - spring looks up the service from OSGi 
    public void setHelloWorldService(HelloWorldService helloWorldService) { 
     this.helloWorldService = helloWorldService; 
    } 
} 

私の例のWebアプリは以下のように単一のコントローラがある

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="viewClass" 
    value="org.springframework.web.servlet.view.JstlView"/> 
    <property name="prefix" value="/jsp/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

をURL 'http://localhost:8080/helloworld-web/spring/home'に呼び出すと、ビューjsp/home.jspがレンダリングさせなければなりません、単一の豆を含むhelloworldで:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd"> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<html> 
<head> 
<title>Spring DM HelloWorld</title> 
</head> 
<body> 
<p>Results from accessing Spring-DM service bundle:</p> 
<p>Message <c:out value="${helloworld.message}" /></p> 
<p>Current Time: <c:out value="${helloworld.currentTime}" /></p> 
<p>Model Version: <c:out value="${helloworld.modelVersion}" /></p> 
</body> 
</html> 

しかし、私は、次のスタックトレースを見ています:

org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application 
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:51) 
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409) 
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116) 
    org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:317) 
    org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:148) 
    org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:424) 
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:493) 
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1557) 
    org.apache.jasper.compiler.Parser.parse(Parser.java:127) 
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:212) 
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:101) 
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:156) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:296) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:277) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:265) 
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:299) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:236) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:257) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1183) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:902) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 

これはOSGiバンドルとして展開WARあるので、そのWEB-INF/libディレクトリが完全に空です。

OSGiバージョンのjasperは個々のweb-appの外にあるtaglib記述子とJARを探すだろうと私は理解していましたか?

他にもこれを見ましたか?

答えて

2

微妙なバンドルバージョンの問題があったはずです。私はexample codeをダウンロードしました。これは若干異なるバージョンのジャスパーなどを使用していました。

Spring-DM reference状態:

春-DMは、任意のタグライブラリを検出することで、WEB-INF/classesの下のlibまたはアンパックWEB-INF /の下のjarファイルとしてパックのいずれかのタグライブラリを配置するのではなく、JSPの慣習を拡張バンドルクラスパス(インポートされたパッケージまたは必要なバンドル)で定義されています。私が行っていた

...

0

は何をしてあなたのMANIFEST.MFが含まれています(インポート、パッケージおよび/または必要にバンドル?)

Bundle-ManifestVersion: 2 
Bundle-Classpath: ., 
WEB-INF/classes 
Bundle-Version: 0.0.1.SNAPSHOT 
Bundle-Name: iki-admin 
Import-Package: javax.servlet, 
javax.servlet.http, 
javax.servlet.resources, 
[..] 
net.sf.navigator.taglib.el, 
[..] 
org.ikiproject.lib.exception, 
[..] 
org.springframework.web.servlet.tags, 
uk.ltd.getahead.dwr 
Bundle-SymbolicName: org.ikiproject.admin 
Web-ContextPath: iki-admin 
Application-TraceLevels: *=info,org.ikiproject.*=verbose 
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 
Require-Bundle: com.springsource.javax.servlet.jsp.jstl, 
com.springsource.org.apache.taglibs.standard, 
org.springframework.security.taglibs 

また、といくつかの問題がある可能性がありますジャスパー&その後OSGiを使用したapache-tomcatバージョン。

関連する問題