-3

web.xmlからjavaクラスを呼び出そうとすると問題が発生します。アプリケーションを実行しているときに、クラス/メソッドをロードできませんか?

私のアプリケーションでは:
jsf 2.0
primefaces 3.1.1
springframework 3.0.2

私を助けてください

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Production</param-value>
</context-param>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/app-config.xml</param-value>
</context-param>

<context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/springsecurity.taglib.xml</param-value>
</context-param>

<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/app-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>Mama</servlet-name>
    <servlet-class>hobic.controller.Mama</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Mama</servlet-name>
    <url-pattern>/hobic.controller</url-pattern>
</servlet-mapping>


</web-app>

Mama.java

public class Mama extends HttpServlet{

public Mama() {
    super();
}

public void metalica() {
    System.out.println("nothing else matter");
    JOptionPane.showMessageDialog(null, "nothing else matter");
}
}

エラー

SEVERE: Exception while visiting CryptoMeWindow$1.class of size 122769
java.lang.ArrayIndexOutOfBoundsException: 130207
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:362)
    at com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.handleEntry(ReadableArchiveScannerAdapter.java:171)
    at com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.onSelectedEntries(ReadableArchiveScannerAdapter.java:133)
    at org.glassfish.hk2.classmodel.reflect.Parser.doJob(Parser.java:348)
    at org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:70)
    at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:307)
    at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:296)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

INFO: SEC1002: Security Manager is OFF.
INFO: SEC1010: Entering Security Startup Service
INFO: SEC1143: Loading policy provider    com.sun.enterprise.security.provider.PolicyWrapper.
INFO: SEC1115: Realm [admin-realm] of classtype  [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created.
INFO: SEC1115: Realm [file] of classtype [com.sun.enterprise.security.auth.realm.file.FileRealm] successfully created.
INFO: SEC1115: Realm [certificate] of classtype [com.sun.enterprise.security.auth.realm.certificate.CertificateRealm] successfully created.
INFO: SEC1011: Security Service(s) Started Successfully
INFO: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
INFO: WEB0169: Created HTTP listener [http-listener-1] on host/port [0.0.0.0:8080]
INFO: WEB0169: Created HTTP listener [http-listener-2] on host/port [0.0.0.0:8181]
INFO: WEB0169: Created HTTP listener [admin-listener] on host/port [0.0.0.0:4848]
INFO: WEB0171: Created virtual server [server]
INFO: WEB0171: Created virtual server [__asadmin]
INFO: WEB0172: Virtual server [server] loaded default web module []
INFO: JTS5014: Recoverable JTS instance, serverId = [3700]
INFO: Portable JNDI names for EJB TestSessionBean : [java:global/Hobic/Hobic-   ejb/TestSessionBean!hobic.view.TestSessionBeanRemote, java:global/Hobic/Hobic- ejb/TestSessionBean]
INFO: Glassfish-specific (Non-portable) JNDI names for EJB TestSessionBean :   [hobic.view.TestSessionBeanRemote#hobic.view.TestSessionBeanRemote,  hobic.view.TestSessionBeanRemote]
INFO: Initializing Mojarra 2.1.3 (FCS b02) for context '/Hobic-war'
INFO: Instantiated an instance of  org.hibernate.validator.engine.resolver.JPATraversableResolver.
WARNING: JSF1074: Managed bean named 'loginBean' has already been registered.     Replacing existing managed bean class type hobic.controller.LoginBean with  hobic.controller.LoginBean.
INFO: Running on PrimeFaces 3.1.1
INFO: PWC1412: WebModule[null] ServletContext.log():Initializing Spring root  WebApplicationContext
SEVERE: log4j:WARN No appenders could be found for logger  (org.springframework.web.context.ContextLoader).
SEVERE: log4j:WARN Please initialize the log4j system properly.
SEVERE: log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more  info.
INFO: Instantiated an instance of  org.hibernate.validator.engine.resolver.JPATraversableResolver.
INFO: PWC1412: WebModule[null] ServletContext.log():Initializing Spring FrameworkServlet 'Spring MVC Dispatcher Servlet'
INFO: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
INFO: WEB0671: Loading application [Hobic#Hobic-war.war] at [Hobic-war]
INFO: Hobic was successfully deployed in 45,269 milliseconds.
4

3 に答える 3

2

あなたのweb.xmlは言う

<servlet>
    <servlet-name>Mama</servlet-name>
    <servlet-class>hobic.controller.Mama</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Mama</servlet-name>
    <url-pattern>/hobic.controller</url-pattern>
</servlet-mapping>

実際、クラスがコードが埋め込まれたMama単なるPOJOである場合。Swing

Mamaであるためには、ServletHttpServletを拡張し、サービスメソッドの1つをオーバーライドする必要があります。

また、すべてのSwingコードをから削除してください。UIの目的でスタンドアロンのJavaアプリケーションに使用されます。これは、サーバー上にあるコードにとってもWebアプリケーションには価値がありませんMamaSwing

したがって、次のMamaようになります。

public class Mama extends HttpServlet {

   // override service method(s) that you intend to support.

}

ここで基本的なチュートリアルを読む

于 2012-05-28T04:22:55.357 に答える
0

アプリケーションで間違った構成スタイルを使用しました。これらのリンクhttp://www.mkyong.com/jsf2/jsf-2-0-spring-integration-example/を参照してください。これはあなたに役立つかもしれません。Webアプリケーションでswingコードを使用しないでください。また、HttpServletを拡張するときにdoGet()またはdoPost()メソッドを作成する必要があります。

于 2012-05-28T10:24:04.793 に答える
0

web.xmlでは、HttpServletを拡張するサーブレットクラスのみを指定できます。サーブレットクラス内でコードをスイングすることはできません。したがって、スイングコードを削除してください。

于 2012-05-28T04:22:06.947 に答える