Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 3

0
votes
answers
54 views
+10

忽略蜻蜓安全約束

6

我試圖在野蠅上獲得一個演示web應用程序。 我在standalone.xml定義這個安全域忽略蜻蜓安全約束

<security-domains> 
       <security-domain name="projects" cache-type="default"> 
        <authentication> 
         <login-module code="Database" flag="required"> 
          <module-option name="dsJndiName" value="java:jboss/datasources/TestDS"/> 
          <module-option name="rolesQuery" value="SELECT role, 'Roles' FROM users WHERE username=?"/> 
          <module-option name="hashAlgorithm" value="MD5"/> 
          <module-option name="hashEncoding" value="hex"/> 
          <module-option name="principalsQuery" value="SELECT password from users WHERE username=?"/> 
         </login-module> 
        </authentication> 
        <authorization> 
         <policy-module code="Database" flag="required"> 
          <module-option name="dsJndiName" value="java:jboss/datasources/school"/> 
          <module-option name="rolesQuery" value="SELECT role, 'Roles' FROM users WHERE username=?"/> 
          <module-option name="hashAlgorithm" value="MD5"/> 
          <module-option name="hashEncoding" value="hex"/> 
          <module-option name="principalsQuery" value="SELECT password from users WHERE username=?"/> 
         </policy-module> 
        </authorization> 
       </security-domain> 

那麼WEB-INF下,我已經在web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 

    <security-constraint> 
    <web-resource-collection> 
     <web-resource-name>projects</web-resource-name> 
     <url-pattern>/twp/projects/*</url-pattern> 
     <http-method>POST</http-method> 
     <http-method>GET</http-method> 
     <http-method>PUT</http-method> 
     <http-method>DELETE</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>ADMINISTRATOR</role-name> 
    </auth-constraint> 
    </security-constraint> 

    <login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>projects</realm-name> 
    <form-login-config> 
     <form-login-page>/login.xhtml</form-login-page> 
     <form-error-page>/error.xhtml</form-error-page> 
    </form-login-config> 
    </login-config> 
    <security-role> 
    <role-name>ADMINISTRATOR</role-name> 
    </security-role> 
    <security-role> 
    <role-name>USER</role-name> 
    </security-role> 
</web-app> 

定義此安全costraints並在jboss-此內容web.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-web> 
    <security-domain>java:/jaas/projects</security-domain> 

</jboss-web> 

的問題是,如果我去/項目URL我不是重定向到登錄頁面,如果約束被忽略了。

+0

你已經保護了'/ twp/projects/*'而不是'/ projects' ... –

+0

我試過了,但它不工作 – Sindico

沙发
0
9

隨着你的配置,它工作正常。在控制檯你這是兩行?:

WARN [io.undertow.servlet] (ServerService Thread Pool -- 7) UT015020: Path /twp/projects/* is secured for some HTTP methods, however it is not secured for [TRACE, HEAD, CONNECT, OPTIONS] 
INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 7) WFLYUT0021: Registered web context: '/test-1.0-SNAPSHOT' for server 'default-server' 

如果沒有,你應該把你的配置到corrent部分中的standalone.xml wildfly

首先意味着該路徑被固定和第二個告訴你重複的Web上下文。

http://localhost:8080/test-1.0-SNAPSHOT/twp/projects下的每個網址都將被保護並重定向到登錄頁面。

例如

http://localhost:8080/test-1.0-SNAPSHOT/twp/projects/all

但不

http://localhost:8080/test-1.0-SNAPSHOT/twp/all

我以urn wildfly 11使用:JBoss的:域:安全性:2.0和不鞘翅。

0
votes
answers
89 views
+10

persistence.xml文件是不是在classpath

-1

所以我試圖建立使用Wildfly,JPA,Hibernate和MariaDB的使用Maven在Eclipse的adminsystem。我在WildFly管理控制檯中配置了我的數據源,一切正常。 Succesful connection picture in WildFly 現在我試圖寫入該項目與實體管理器工廠的數據庫在Eclipse。但我有此錯誤消息: Error message in Eclipse 在這裏你可以看到我的項目樹: Project treepersistence.xml文件是不是在classpath

這裏是我的POM:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.gyurmatag.adminsystem</groupId> 
<artifactId>adminsystem</artifactId> 
<version>1.0</version> 
<packaging>war</packaging> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 

    <servlet.version>3.1.0</servlet.version> 
    <jsf.version>2.2.12</jsf.version> 
    <primefaces.version>5.3</primefaces.version> 

    <version.wildfly>9.0.2.Final</version.wildfly> 
    <jboss.home>${project.build.directory}/wildfly-${version.wildfly} 
    </jboss.home> 
    <server.config>standalone.xml</server.config> 

    <maven-compiler-plugin.version>3.3</maven-compiler-plugin.version> 
    <maven-dependency-plugin>2.10</maven-dependency-plugin> 
    <maven-resources-plugin.version>2.7</maven-resources-plugin.version> 
    <wildfly-maven-plugin.version>1.1.0.Alpha5</wildfly-maven-plugin.version> 
</properties> 

<dependencies> 
    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>${servlet.version}</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- JSF --> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-api</artifactId> 
     <version>${jsf.version}</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-impl</artifactId> 
     <version>${jsf.version}</version> 
     <scope>compile</scope> 
    </dependency> 
    <!-- PrimeFaces --> 
    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>${primefaces.version}</version> 
    </dependency>  

    <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java- 
client --> 
    <dependency> 
     <groupId>org.mariadb.jdbc</groupId> 
     <artifactId>mariadb-java-client</artifactId> 
     <version>2.2.0</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.2.12.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.1-api</artifactId> 
     <version>1.0.0.Final</version> 
    </dependency> 


    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate- 
entitymanager --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.2.12.Final</version> 
    </dependency> 

</dependencies> 

<build> 
<pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>${maven-compiler-plugin.version}</version> 
      <configuration> 
       <source>${java.version}</source> 
       <target>${java.version}</target> 
      </configuration> 
     </plugin> 
     <!-- Unpack the distribution --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>${maven-resources-plugin.version}</version> 
      <executions> 
       <execution> 
        <id>unpack-wildfly</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>unpack</goal> 
        </goals> 
        <configuration> 
         <artifactItems> 
          <artifactItem> 
           <groupId>org.wildfly</groupId> 
           <artifactId>wildfly-dist</artifactId> 
           <version>${version.wildfly}</version> 
           <type>zip</type> 
           <overWrite>false</overWrite> 
           <outputDirectory>${project.build.directory} 
</outputDirectory> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <!-- Copy server configuration --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>${maven-resources-plugin.version}</version> 
      <executions> 
       <execution> 
        <id>copy-standalone-xml</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 

<outputDirectory>${jboss.home}/standalone/configuration</outputDirectory> 
         <resources> 
          <resource> 
           <directory>src/main/resources</directory> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <!-- Maven WildFly plugin --> 
     <plugin> 
      <groupId>org.wildfly.plugins</groupId> 
      <artifactId>wildfly-maven-plugin</artifactId> 
      <version>${wildfly-maven-plugin.version}</version> 
      <configuration> 
       <jbossHome>${jboss.home}</jbossHome> 
       <serverConfig>${server.config}</serverConfig> 
      </configuration> 
     </plugin> 
    </plugins> 
    </pluginManagement> 
</build> 

這裏是我的持久性。 XML:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
     version="2.0"> 

      <persistence-unit name="adminsystem" transaction-type="JTA"> 
      <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 

       <jta-data-source>jboss/MariaDBDS</jta-data-source> 


       <properties> 
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> 
        <property name="hibernate.hbm2ddl.auto" value="validate" /> 
        <property name="hibernate.show_sql" value="true" /> 
        <property name="hibernate.format_sql" value="true" /> 
        <property name="hibernate.connection.release_mode" value="auto" /> 
       </properties> 
      </persistence-unit> 

這裏是我JPAUtility類:

package com.gyurmatag.adminsystem.model; 


import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 


public class JPAUtility { 
private static final EntityManagerFactory emFactory; 
static { 
     emFactory = Persistence.createEntityManagerFactory("adminsystem"); 
} 
public static EntityManager getEntityManager(){ 
    return emFactory.createEntityManager(); 
} 
public static void close(){ 
    emFactory.close(); 
} 
} 

如果你想採取一個更仔細看看我的項目,你可以在這裏找到:Bitbucket repo

你能幫助我有了這個?

非常感謝! :)

+5

'persistence.xml'就是它應該被稱爲... – DN1

+0

這似乎是一個在問題中錯字... –

+0

是的。這是一個錯字。感謝您的答案! –

沙发
0
0

我懷疑你有太常見了「太多的依賴錯誤」。

更換所有你的依賴與:

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>7.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>${primefaces.version}</version> 
    </dependency>  
</dependencies> 

,看你怎麼去...

+0

我的代碼中存在拼寫錯誤。無論如何感謝您的答案! –

+0

您應該解決您的依賴反正 –

+1

它工作正常... –

0
votes
answers
52 views
+10

模型層上的業務規則

1

在我的課程中,我需要驗證並保存movimentation的狀態。我不知道把這個驗證放在哪裏。我想我最好把它放在模型層上,而不是放在我的bean中。模型層上的業務規則

我這樣做:

1 - Movimentacao

@SuppressWarnings("serial") 
@Entity 
public class Movimentacao implements Serializable, Entidade { 

    ... 

    @Column(nullable=false) 
    @NotNull 
    @DecimalMin("0.01") 
    private BigDecimal valor; 

    @Column(nullable=false) 
    @NotNull 
    @DecimalMin("0.01") 
    private BigDecimal valorQuitado;  

    @Enumerated(EnumType.STRING) 
    @Column(nullable=false, length=1) 
    private MovimentacaoStatus status; 

    ... 

    public void setStatus(MovimentacaoStatus status) { 
     this.status = status; 
    } 

} 

2 - form.xhtml

<!-- show only on edit mode (status not null) --> 
<h:outputText id="status" value="#{movimentacaoBean.movimentacao.status.descricao}" rendered="#{movimentacaoBean.movimentacao.status ne null}" /> 

3 - MovimentacaoBean

public String salvar() throws Exception{ 

    movimentacaoService.salvar(movimentacao); 
    this.movimentacao = null; 
    this.todos = null; 

    context.addMessage(null, new FacesMessage("Movimentação salva com sucesso", "")); 
    context.getExternalContext().getFlash().setKeepMessages(true); 

    return "pretty:financeiro-lista"; 

} 

狀態不是由用戶定義的。我應該在哪裏進行驗證?在setStatus上?

如果我改變setStatus到(例如):

public void setStatus() { 
//example. The real Business rules are other. 
this.status = MovimentacaoStatus.P; 
} 

public void setStatus(MovimentacaoStatus status) { //status variable never used... 
//example. The real Business rules are other. 
this.status = MovimentacaoStatus.P; 
} 

我收到以下錯誤(因爲MovimentacaoBean沒有收到form.xhtml狀態):

原因:java.sql.SQLIntegrityConstraintViolationException:列 'status'不能爲空

如何以及在哪裏我應該放置狀態的業務規則?編輯記錄時,同樣的問題也適用。取決於「勇氣」和「valorQuitado」,狀態可能會改變。編輯模式的不同之處在於狀態屬性在form.xhtml(只讀 - outputText)上可見

+0

你應該把驗證在bean。在Movimentacao上執行保存之前。你也可以在該領域做出要求(使用枚??舉selectOneMenu是最好的選擇)。 – Milkmaid

+0

@Milkmaid也許在MovimentacaoService上更好,對不對?因爲如果我需要在JSF的其他技術上使用相同的類,則不會有耦合。 –

沙发
0
0

這取決於。我通常把它放進豆子裏。但是使用異常來檢查服務層也是有意義的。 (如果你計劃不同的前端等) 缺點可能是,如果你有很多驗證,你想給最終用戶適當的信息,它可能會更棘手一些。

因此:我會建議在兩個地方做檢查。

  • 在bean中驗證每個輸入並向最終用戶提供正確的信息。

  • 在服務中引發一般異常並在bean中捕獲它。

基本規則:

  • 確保你沒有在服務中使用的bean的東西(像面背景下,或豆類本身等)。

  • 確保在數據庫上升異常之前執行檢查。(運行)

檢查這個問題,以及:link

0
votes
answers
40 views
+10

CRUD操作在多個Google日曆上(多個客戶端日曆)

0

我必須從我的Web應用程序添加/修改/刪除/事件的(患者預約)我的客戶的日曆(谷歌日曆)。有可能這樣做嗎?CRUD操作在多個Google日曆上(多個客戶端日曆)

謝謝。

沙发
0
0

應該可以

谷歌提供了可用於查看和管理使用的CalDAV協議日曆的CalDAV一個接口。

(從Google's CalDAV API documentation

0
votes
answers
55 views
+10

從WebApp啓動和停止線程

1

我編寫了解如何以及如何執行以下操作。從WebApp啓動和停止線程

我有一個用於管理的WebApp,我應該在其中添加一個按鈕(或類似的東西)來啓動和停止Java線程(此線程在數據庫上進行輪詢,發送電子郵件等)。 其目的是使用戶能夠管理這個線程的生命,決定是否保持它活着的時候,永遠活着,停止,等等....

的邏輯是:

  1. 如果你點擊「開始」,線程運行,如果還沒有一個實例在運行;
  2. 如果你點擊「停止」,停止它。

正在運行的實例必須是唯一的,以便不同的用戶(組管理員)不會啓動多個線程。

問題1.這是應該做什麼?
問題2我不明白是否有可能檢索已經運行的線程實例。
問題3.是否可以給線程一個「名稱」?

我在谷歌搜索,但沒有發現任何東西,也許是因爲我看起來不好。

非常感謝。

+0

謝謝您的建議。 是的,很多編輯... 這三個問題是相關的;但是,請你只能回答q.2嗎? 再見 – sangi 2010-07-21 00:32:04

沙发
0
0

第一個問題,我不能回答,因爲它聽起來更像是一個陳述;)

第二個是:好了,除非你放棄參考線實例(通過寫新的主題,即() .start();)您將可以在任何給定時間調用該線程實例上的方法。如果你放棄引用(你不應該),那麼你可以嘗試在當前線程的ThreadGroup中找到它(Thread.currentThread()。getThreadGroup())。

第三個問題的答案:是的,你可以命名一個線程。 線程namedThread = new Thread(「myPetThread」);

0
votes
answers
44 views
+10

後臺線程

0

我正在使用Websphere Application Server創建一個典型的Web應用程序,其中UI是JSP,有一個Controller和一個會話EJB和一個數據庫。我實現了一個通知系統,作爲一個單獨的線程在後臺運行。爲此,我使用了WorkManager。後臺線程

我的問題是,我想啓動WorkManager,而不必爲每個由不同用戶啓動的每個並行會話創建會話或EJB實例。它不應該基於會話。 現在,WorkManager線程在EJB實例化時啓動,所以如果有3個連接,則有3個WorkManager實例。

單會話bean會是一個好主意嗎?或者有什麼地方可以放置一個將被調用的'main()'方法,或者類似的東西?

任何想法,將不勝感激。

沙发
0
1

我認爲有以下幾個選項:

  • 使用servlet上下文偵聽提交工作(當WAR模塊啓動,這將被調用/停止)。
  • 使用啓動Bean(WebSphere特定API),在應用程序啓動/停止時調用一次。
  • 使用引用計數方法記錄EJB實例的數量。您在創建第一個實例時提交工作(並在最後一個實例被銷燬時停止工作)。請注意,這會延遲工作的開始,直到第一次請求EJB。
  • 在WebSphere 8(支持Java EE 6)中,您可能使用單例會話bean。
0
votes
answers
50 views
+10

如何在Eclipse中啓動Java EE 6項目

9

我最近幾年(連同其他語言)在完成Java SE之後開始學習Java EE 6。我買了不同的關於Maven,EJB,JSF,Glassfish等的書(儘管如此還沒有讀完),我感到完全不知道做項目的複雜性。如何在Eclipse中啓動Java EE 6項目

如何在eclipse中從「scratch」(不從本書中的示例複製)中啓動項目?我可以選擇Dynamic Web項目,Maven項目,EJB項目,EAR應用程序等。如果我想創建一個內部具有EJB/JPA和JSF的應用程序(Web應用程序),應該使用哪一個?

我知道標準Maven目錄佈局和原型,但是我不知道要選擇這種方法。當然,我知道有很多方法可以做到這一點,這取決於我將如何使用它,但是我正在學習Java EE 6,所以我想至少了解如何將基本項目設置爲好。

我也很受POM文件的淹沒。如何才能知道我需要哪些依賴關係才能開始使用Web應用程序?或者這是否包含在正確的原型中(如果我找到了)?

我使用Glassfish作爲應用服務器,Eclipse,EJB,JPA和JSF。目前只從書中的例子中學習。

+0

如果你從頭開始,要學習Java,忽略Maven的現在!沒有必要使用IDE(無論是Netbeans還是Eclipse)提供您需要的一切。當涉及到實際項目時,Maven很有趣 - 只是一個提示,以便您可以從待辦事項列表中刪除一項技術:-) – home

沙发
0
11

那麼,你的問題的完整答案几乎需要整本書本身,但這裏有一些指針。

  • 的Java EE應用程序的概念,代表任何一種使用一個或多個Java EE的API的實現,需要一個Java EE應用服務器運行Java應用程序。 Java API就是這樣的:Servlet,JSP,EJB,JPA等。這些API的實現通常由應用程序服務器提供(例如Tomcat具有servlet和JSP實現,Glassfish也具有這些以及EJB等)。假設有非應用程序服務器Java EE API實現,比如Hibernate的JPA實現。所以簡而言之,如果您在應用程序中使用其中的一些API實現並將其部署到某些應用程序服務器(如Tomcat,Glassfish,JBoss AS等)中,那麼您將擁有一個Java EE應用程序。

    • 我已經告訴你這一切,因爲在現實中,大多數的項目管理工具(比如Eclipse,Maven的,等等)使用這些細分如Web的應用程序,EJB模塊,動態Web項目等,作爲自定義面額,它建立了您的應用程序將使用的Java EE API的集合。 I.E. Web應用程序或動態Web項目將更可能使用Servlet和JSP API,EJB模塊將(使用)EJB API等。正如我所說,這些都是球場公園的教派。動態Web應用程序也可以使用EJB或JPA,它不像它寫的那麼簡單。

    • 當您使用Eclipse或Maven這些工具中的任何一個時,啓動上面提到的其中一個命名項目(例如Elcipse中的動態Web項目或Maven的標準Web應用程序),相應的工具將添加對您的模板項目的常識依賴關係(如本例中的Servlet和JSP),然後讓您從此處理它。

    • 這裏的想法是在項目開始之前使用它,然後才能理解所選工具的各種模板。就像如果您決定使用Eclipse並從動態Web項目開始一樣,您應該查看Eclipse向您詢問的內容以及執行操作時的操作(它會詢問您從本地安裝的Java EE應用程序服務器的位置將牽扯到諸如Servlet實現和JSP實現之類的依賴關係)。或者,如果你選擇Maven,並開始一個標準的Web項目,你應該檢查它通過pom.xml文件添加到項目中的依賴關係,THAT pom.xml文件的基本功能是什麼等等。你還應該檢查當你告訴它做的是這些工具如何部署應用程序,它使用Java EE服務器的一些熱點部署功能,它需要的憑據訪問該服務器第一等

我的簡短建議是從一個非常基本的例子開始:安裝Tomcat(建議使用版本7),啓動Eclipse for Java EE Development,將Tomcat安裝添加到Eclipse配置中,啓動一個使用該Tomcat作爲Application Server的Dynamic Web項目,只是做一些基本的servlet和JSP頁面,然後使用Eclipse將該sucker部署到tomcat並運行它。然後你可以分支到更高級的東西,比如用Maven做同樣的事情,將Maven項目與Eclipse集成,添加更多的Java EE東西(比如JPA Implenentation)等等。

板凳
0
1

我第一件事情就是, d問你是爲什麼你正在學習如此多的技術。如果你的目標是找到一份工作,以我的經驗來看,企業遠離Java EE並趨向於更簡單的解決方案。例如,對於大多數組織和Tomcat(或另一個Web服務器)來說,應用程序服務器是過度殺毒,它使用像Spring這樣的輔助技術和獨立的JMS服務器來替代全功能和更復雜的Java EE服務器。

我認爲在開始使用核心概念和更簡單的技術時應避免使用IDE,複雜的構建,EAR等等。相反,從一種或兩種技術開始(例如,一個hello Tomcat應用程序用一個簡單的Ant構建),並逐漸添加每種技術,因爲你找到需要。更好的是,如果你有一個真正的世界問題需要解決,即使它沒有支付。

大多數公司(至少那些有技術線索的人)寧願僱用一位程序員,他明白JSF所添加的技術的價值,以及複雜程度高於在簡歷中使用大量縮寫詞的人的複雜程度。

地板
0
0

How to start a new web app project in Eclipse with Maven?

只需鍵入 「原型:產生」,並選擇JSF + EJB/JPA(如果可用)。

這一個似乎罰款:360:遠程 - > org.jboss.weld.archetypes:焊接JSF的JEE(焊接原型用於創建使用JSF 2.0,CDI 1.0,EJB 3.1和JPA一個 Java EE 6的應用2.0 (包括持久性單元))

該Appfuse是相當完整的,可能會嵌入的東西,你永遠不會 使用,你將不得不刪除。

之後,mvn eclipse:eclipse能夠在eclipse中加載項目。

4楼
0
1

http://blogs.oracle.com/arungupta/entry/web_app_development_using_java提供瞭如何使用Eclipse和GlassFish創建Java EE 6項目的完整說明。

另外,您還可以在NetBeans中創建一個Java EE 6項目作爲解釋:

http://blogs.oracle.com/arungupta/entry/screencast_37_java_ee_6

42
votes
answers
42 views
+10

org.hibernate.ObjectNotFoundException:不存在具有給定標識符的行,但它確實存在

如果我做其他操作,Hibernate也能看到該行 - 也許在這里和那裡添加一行到數據庫,甚至不在同一個表上。

從這一切我懷疑是一個Hibernate錯誤,但我是一個Hibernate新手,所以我可能錯了。請幫忙!我用google搜索並用谷歌搜索無效。

這是我的Hibernate配置:

 &lt;?xml version =“1.0”encoding =“UTF-8”? &GT; &lt;!DOCTYPE hibernate-configuration PUBLIC“ -  // Hibernate / Hibernate Configuration DTD 3.0 // EN”“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> &LT;冬眠-結構&gt; &LT;會話工廠&GT; &lt; property name =“hibernate.dialect”&gt; org.hibernate.dialect.MySQLDialect&lt; /性&gt; &lt; property name =“hibernate.connection.driver_class”&gt; com.mysql.jdbc.Driver&lt; / property&gt; &lt; property name =“hibernate.connection.url”&gt; jdbc:mysql:// localhost:3306 / msc&lt; / property&gt; &lt; property name =“hibernate.connection.username”&gt; root&lt; / property&gt; &lt; property name =“hibernate.connection.password”&gt; -------&lt; / property&gt; &lt;! -  JDBC連接池(使用內置) - &gt; &lt; property name =“connection.pool_size”&gt; 80&lt; / property&gt; &lt; property name =“current_session_context_class”&gt; thread&lt; / property&gt; &lt;! - 將所有已執行的SQL回顯到stdout  - &gt; &LT; property name =“show_sql”&gt; true&lt; / property&gt; &lt; mapping resource =“msc / model / Picture.hbm.xml”/&gt; &lt; mapping resource =“msc / model / Comment.hbm.xml”/&gt; &LT; /會話工廠&GT; &LT; /休眠-結構&gt;   

這是我的兩個映射文件:

 &lt;?xml version =“1.0”encoding =“UTF-8”?&gt; &lt;!DOCTYPE hibernate-mapping PUBLIC“ -  // Hibernate / Hibernate Mapping DTD 3.0 // EN”“http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> &LT;休眠映射&GT; &lt; class name =“msc.model.Picture”table =“PICTURE”&gt; &lt; id column =“PICTURE_ID”name =“id”&gt; &lt; generator class =“native”/&gt; &LT; / ID&GT; &lt; property name =“story”/&gt; &lt; property name =“email”/&gt; &lt; property name =“category”/&gt; &lt; property name =“state”/&gt; &lt; property name =“ratings”/&gt; &lt; property name =“views”/&gt; &lt; property name =“timestamp”/&gt; &lt; property name =“title”/&gt; &lt; property lazy =“true”name =“image”type =“blob”&gt; &lt; column name =“IMAGE”/&gt; &LT; /性&gt; &lt; property lazy =“true”name =“refinedImage”type =“blob”&gt; &lt; column name =“REFINEDIMAGE”/&gt; &LT; /性&gt; &lt; property lazy =“true”name =“thumbnail”type =“blob”&gt; &lt; column name =“THUMBNAIL”/&gt; &LT; /性&gt; &lt; bag cascade =“save-update”lazy =“true”name =“comments”table =“COMMENT”&gt; &lt; key column =“PICTURE”/&gt; &lt; one-to-many class =“msc.model.Comment”/&gt; &LT; /袋&GT; &LT; /類&GT; &LT; /休眠映射&GT;   

 &lt;?xml version =“1.0”encoding =“UTF-8”?&gt; &lt;!DOCTYPE hibernate-mapping PUBLIC“ -  // Hibernate / Hibernate Mapping DTD 3.0 // EN”“http://hibernate.sourceforge。hib_ses.save(用戶); hib_ses.getTransaction()提交();   

顯示數據的代碼(本例中為圖像)

  public class ImageAction extends ActionSupport實現ServletResponseAware,SessionAware {private HttpServletResponse response; 地圖會話; 私人長身份; private int thumbnail; private InputStream inputStream; @Override public String execute()拋出異常{response.setContentType(“image / jpeg”); Session hib_session = HibernateUtil.getSessionFactory()。getCurrentSession(); hib_session.beginTransaction(); //現在的ID是什麼?圖片pic =(圖片)hib_session.load(Picture.class,getId()); if(thumbnail == 1){inputStream =(ByteArrayInputStream)pic。。getThumbnail()getBinaryStream(); } else {inputStream =(ByteArrayInputStream)pic.getRefinedImage()。getBinaryStream(); } hib_session.close(); 返回SUCCESS; }  
    
        
沙发
+160

檢查所有映射和數據庫設置。當您的數據庫顯示nullable =“true”時,您可能在外鍵關係中設置了一些not-null =“true”。第一個導致INNER JOIN而第二個導致LEFT JOIN。

將日誌級別設置為TRACE以查看所有步驟並在檢索對象時查找生成的SQL。

板凳
+160

這是因為您插入了一些外鍵但不引用任何內容。檢查數據庫是否存在該密鑰(即使它存在於其他表中的數據庫中)。

我確認,至少在我的情況下,這就是問題所在。 - borjab 2014年7月11日16:05

這是非常重要的檢查,我的數據庫有這個問題,如果我們沒有意識到這個問題會讓我們陷入困境 - Uriel Arvizu 2016年6月27日17:05

地板
+50

只需檢查您的數據庫是否在您的特定表格中提供了ID 73

4楼
+30

在多對一關係中,如果找不到映射的行,您需要告訴Hibernate需要做什麼。您可以通過以下方式對其進行配置:

 註釋:@NotFound(action = NotFoundAction.IGNORE)映射XML:&lt;多對一名稱=“user”column =“user_id” class =“com.xyz.User”cascade =“save-update,evict”not-found =“ignore”/&gt;  
     
			
        

這救了我的命!謝謝! - jkabugu 2017年2月28日23:45

5楼
+20

好的,我要在這裡拋出一個理論。可能是您在提交事務之前第一次嘗試加載圖片嗎?

由於事務尚未提交,因此該行不可見你用來讀取圖片的事務(取決於你的事務隔離級別)。

然後,因為 hib_session.close()不在 finally < / code> block,它不會被執行,並且線程綁定會話仍然會有一個打開的事務。後續請求獲得相同的 Hibernate會話,具有相同的開放事務,並且您從select it問題中獲得相同的結果(再次,取決於事務隔離級別 - 請參閱

理論似乎很有希望,當我在我的代碼中應用調試點時一切正常。這意味著hibernate有時間提交事務(我認為)!! - 不是錯誤2016年1月25日10:12

6楼
0

我沒有看到任何與代碼中的異常有關的實際問題,您可能想嘗試:

  • 檢查事務是否已刷新或調用 flush()提交後手動;
  • 檢查ID是否傳遞給 load()以及是否通過調試器傳遞了正確的ID
  • 啟用Hibernate打印生成的SQL和/或啟用日誌記錄

我嘗試了所有3個建議,但沒有一個幫助,雖然flush()使它更少發生(即它有時會工作!非常奇怪)。還有其他想法嗎? - 討厭的糊狀12年12月24日13:08

@nastypasty嗯,這至少可以說是奇怪的。我能想到的最好的方法是設置Hibernate日誌記錄配置並檢查TRACE級別日誌,這應該向您顯示問題並且它們對於小型INSERT應該是可讀的。你需要一個日誌後端才能使用它,我建議使用logback,但是slf4j支持很多其他的。如果你告訴我你選擇哪一個,我想如果你遇到任何問題我可以幫你設置... - TC1 12年1月24日15:33

7楼
0

我有一個與hibernate 3.6.10類似的問題,而我只是在搜索和選擇(如果存在)。

註釋:

  @Entity public class Familiares {@OneToMany(mappedBy =“familiares”)私人名單&lt; FamiliaresBaja&gt; BAJAS; @Entity @Table(name =“familiares_baja”)公共類FamiliaresBaja實現Serializable {private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id; @JoinColumn(name =“familiares_id”)@ManyToOne(optional = false)private Familiares familiares;   

然後我檢索一個List,並查看FamiliaresBaja,如果至少有一個。

  createQuery(“
     
			
        

這是一個解決方案,或者它看起來怎麼樣? - Trinimon '13年4月24日15:15

不,我只是強化了一個錯誤的想法,一個大的錯誤,一個非常簡單的例子 - FiruzzZ 2013年6月6日16:55

8楼
0

請檢查mysql服務器的lower_case_table_names的值。如果它的值為0,檢查hibernate生成的SQL,確保表名的大小寫與mysql中的實際表名一致。

9楼
0

我面對這個問題,這裡發生了什麼以及我如何解決它。你很可能也有同樣的事情發生。

我有POST和USER對象。他們處於OneToMany關係中(用戶可以有很多帖子)。使它成為雙向的,它們也處於ManyToOne關係中(一個帖子只屬於一個用戶)。

帖子類看起來

  @Entity @Table(name =“Post”) )public class Post {@Id @GeneratedValue(strategy = GenerationType.TABLE)private long postId; 私有字符串標題; 私有String體; @ManyToOne(fetch = FetchType.EAGER)@JoinColumn(name =“postUserId”)私有AutoUser autoUser; // getter和setter   

用戶類是

  @Entity @Table(name =“AUTO_USER” )public class AutoUser實現UserDetails {@Id @GeneratedValue(strategy = GenerationType.IDENTITY)private Long autoUserId; @Column(name =“USERNAME”)私有字符串用戶名; @OneToMany私人列表&lt; Post&gt; postList = new ArrayList&lt;&gt;(); // getter和setter   

第一個表名是Post和AUTO_USER我有3個用戶持久保存到AUTO_USER表(id為1,2,3)..並且3個帖子到帖子表1為每個用戶。(連接列或外鍵是1,2,3)

然後我只更改了用戶對象的表名,並將其命名為 @Table(name =“AUTO_USER2”)我在這個表中只有一個用戶名為1的用戶。

有沒有辦法配置tomcat,以便它提供沒有“java:comp / env /”的JNDI - m.weiloa 18年6月16日在0:37

10楼
0

檢查觸發器,如果您有一個插入前觸發器,並且序列中有NEXTVAL,則會導致該錯誤。

11楼
0

您正在尋找具有不同ID的實體中的一對一關係,嘗試在映射表中加載ID,而不是標識列。

3
votes
answers
54 views
+10

Tomcat vs Weblogic JNDI Lookup

我們正在使用的Weblogic服務器已配置為允許JNDI數據源名稱,如“appds”。

對於開發(localhost),我們可能正在運行Tomcat,並且在&lt; context&gt;中聲明。在server.xml的一節中,Tomcat會在JNDI樹中的“java:comp / env / jdbc / *”上掛起JNDI數據源。

問題:在Weblogic中,JNDI查找在Tomcat中是“appds”,似乎我必須提供正式的“java:comp / env / jdbc / appds”。我擔心Tomcat版本是一個隱含的標準,但不幸的是,我不能改變Weblogic的配置...所以這意味著我們最終得到兩個不同的spring配置文件(我們使用的是spring 2.5)來促進不同的環境。

有沒有一種優雅的方式來解決這個問題。我可以直接在Tomcat中查看JNDI名稱嗎?Spring可以在兩個地方都有名字和外觀嗎?谷歌搜索或建議會很棒。

沙发
+10

環境變量怎麼樣?使用Weblogic名稱為開發人員計算機設置tomcat名稱和生產。您甚至可以將代碼設置為使用默認代碼(WebLogic),以防該變量不存在。

板凳
+10

你如何在春天引用資源?

這就是我們對tomcat的看法:

上下文:

 &lt; Resource name =“jms / ConnectionFactory”auth =“Container”type =“org.apache.activemq.ActiveMQConnectionFactory”description =“JMS Connection Factory”factory =“org.apache.activemq.jndi.JNDIReferenceFactory”brokerURL =“tcp:// localhost:61615”brokerName =“StandaloneAc tiveMQBroker”/&gt;   

spring:

 &lt; beans xmlns =“http://www.springframework.org/schema/beans” xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance”xmlns:util =“http:
     
			
        

為什麼使用ActiveMQ庫連接到weblogic? - wmarbut 16年1月13日22:42

地板
+10

在應用程序本身設置DataSource並不是那麼瘋狂:)我想說如果應用程序要部署在網格上,這甚至是強制性的。河流,GigaSpaces或類似的。

注意:我沒有說連接設置必須在WAR內部進行硬編碼,它們需要在部署時/運行時提供。這簡化了雲實例的管理,因為只有在適當的位置進行配置。

只有在那裡部署多個應用程序並且他們可以使用共享資源時,才能在容器上配置資源。

同樣,在雲類型的部署中,每個servlet容器實例只有一個應用程序。

4楼
0

我的應用程序也有類似的問題,這就是我解決它的方法:

1) WEB-INF / classes / application.properties 包含條目:

 ds.jndi = java:comp / env / jdbc / tcds  

2)在WLS機器上,我在 / etc / sysenv 文件中有一個條目:

 ds.jndi = wlsds  

3)我使用配置spring以查找屬性 $ {ds.jndi} 的JNDI PropertyPlaceholderConfigurer bean,其中 classpath:application.properties file:/ etc / sysenv 作為位置。我還將 ignoreResourceNotFound 設置為 true ,以便開發人員無需 / etc / sysenv < / code>在他們的機器上。

4)我使用Cargo + Jetty運行集成測試,我無法在那裡正確設置JNDI環境。所以我也使用 JndiObjectFactoryBean defaultObject 屬性配置了回退 BasicDataSource

62
votes
answers
42 views
+10

已在使用的地址:JVM_Bind

我在Windows XP專業版上使用Glassfish 3.0.1,JVM 1.6.0_21;

我不確切知道環境中發生了什麼變化但是我在嘗試時就得到了這個堆棧跟踪部署企業應用程序(ejb模塊+應用程序客戶端模塊)。

沒有任何東西在3820端口上運行,除了Glassfish ......我檢查了netstat,服務器已停止,服務器已啟動。

這可能是什麼原因?一些內部進程衝突?

有關如何進一步調試的提示?

 警告:找不到此記錄器的資源包。失敗的類名:org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory嚴重:iiop.createsocket_exception警告:找不到此記錄器的資源包。失敗的類名:org。找不到此記錄器的資源包。失敗的類名:org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory警告:找不到此記錄器的資源包。失敗的類名:org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory嚴重:“IOP00410216:(COMM_FAILURE)無法在指定的主機/端口上創建IIOP偵聽器:all interfaces / 3820”  < p> 編輯這正是我試過的: 
  C:Documents and Settings?.tanase&gt; netstat -p tcp -ano | findstr:3820 asadmin&gt; start-domain domain1等待DAS啟動...已啟動域:domain1域位置:D:javaglassfish-3.0.1glassfishdomainsdomain1日誌文件:D:javaglassfish-3.0.1glassfishdomainsdomain1logsserver.log域的管理端口:4848命令start-domain成功執行。C:文檔和設置?.tanase&gt; netstat -p tcp -ano | findstr:3820 asadmin&gt; deploy d:/ java / projects / netbeans-projects / CountingSystem / dist / CountingS ystem.ear com.sun.enterprise.admin.cli.CommandException:遠程失敗:填充應用程序時出現異常:java.lang.RuntimeException:EJB容器初始化錯誤調用類時的異常org.glassfish.ejb.startup.EjbDeployer加載方法:java.lang.RuntimeException:EJB容器初始化錯誤命令部署失敗。C:文檔和設置?.tanase&gt; netstat -p tcp -ano | findstr:3820 TCP 0.0.0.0:3820 0.0.0.0:0 Listninging 2428   

正如你所看到的那樣'

up vote 10 down vote accepted favorite
沙发
+100
+50

我注意到你正在使用windows,這對於使用低端口號進行傳出套接字尤其糟糕。有關如何保留您想要用於glassfish的端口號,請參見此處

謝謝你的鏈接; 可能有用。你認為你可以詳細說明“windows ...使用低端口號碼特別糟糕......”還是給我一個進一步閱讀的鏈接? - 波格丹2010年11月25日10:11

@Bogdan還有另一個堆棧溢出問題,提供了更多的細節,stackoverflow.com/questions/2630009/ - MrPotes 2011年4月14日在15:09

謝謝你的鏈接。這似乎是發生事件的最可能原因。當我再次碰到它時,我會記住它。 - 波格丹2011年4月14日16:19

@MrPotes:1024是關於'低端口號'的下限 - mschr 2014年2月19日10:18

+460

您使用的是本地端口443/8181/3820。

如果您使用的是linux / unix:

  • 請使用 netstat -an lsof -n 檢查誰正在使用此端口

    如果您在Windows上

    • 使用 netstat - tcpview 進行檢查。

+1提及tcpview - Aravind R. Yarram 2010年9月15日5:55

根據netstat&tcpview,在運行glassfish並嘗試部署應用程序之前,沒有任何東西在端口3820上運行。請參閱我的更新 - 波格丹2010年9月15日6:17

tcpview救了我的命。+1。有助於知道tcpview可以終止使用您需要的端口的服務。 - crstamps2 12年2月20日15:25

在我的情況下,我的程序的一個實例未正確關閉(eclipse重啟沒有幫助)。在這種情況下,首先查看任務管理器並簡單地殺死您知道不應該運行的任何JVM實例可能更容易。 - chris544 2015年5月26日20:13

+50
Windows上的

打開一個具有管理員權限的cmd.exe窗口,並使用 netstat -a -b -o ,您將獲得保存您的端口並能夠使用任務終止它的進程的ID管理器。

+10

作為例外說已經有另一台服務器在同一個端口上運行。你可以殺死那個服務,也可以改變玻璃魚在另一個詩人身上運行

你怎麼殺了它? - CodyBugstein於2014年5月13日22:31

0

記錄的錯誤確實說端口3820是問題所在,但我建議您調查所有您應用嘗試收聽的端口。我遇到了這個問題,問題是我忘記了一個端口 - 而不是我正在尋找的“主要”端口。

0

另外,在Windows下, ProcessExplorer 非常適合觀察每個進程的現有TCP / IP連接。

0

您可以嘗試使用 TCPView 效用。

嘗試在 localport 列中找到“busy”端口上的任何進程。右鍵單擊並結束該過程。然後嘗試啟動 Tomcat

它真的對我有用。

你可能想看看可用的較輕的框架,比如Apache Wicket等。我個人覺得JSF的方式對於大多數應用來說太沉重和腳本化了,除非你不關心生成的代碼的有效性等等,只需要在很短的時間內完成工作...... - TC1 Jun 10月11日13:51

@ TC1:我會瞥一眼。非常感謝。+1 - SDReyes 2011年6月10日14:04

也許這應該遷移到programmers.stackexchange.com? - maple_shaft 2011年6月10日15:32

相關:stackoverflow.com/questions/3623911/ - BalusC 2011年6月11日16:10

0

我的回答100%適合這個問題,但我想記錄我的解決方案及其背後的陷阱,因為Exception是相同的。

我的端口一直在使用測試Jetty in一個Junit測試用例。問題是谷歌的Eclipse代碼專家,我猜測,它正在後台進行測試,因此始終在我面前開始測試。解決方法:讓Eclipse打開* .java文件始終使用Java編輯器而不是Google的Junit編輯器。這似乎有所幫助。

非常感謝,我得到了它:) - SDReyes 2011年6月11日16:57

0

這個問題主要發生是因為代碼運行的另一個因素可能是你最常做的一些測試。找出並關閉任何其他實例,或者如果沒問題,請嘗試重新啟動服務器。

你如何關閉另一個實例? - CodyBugstein 2015年9月27日18:16

自1995年以來20多年的編程和web-dev ...... JSF 1,現在2是從Web 2.0思想向後退一步的恕我直言。最糟糕的部分是單片層連接,只有Java開發人員可以參與該項目(XHTML不能被原生樣式化 - 它必須在容器中呈現,並且根據確切的版本不能保證結果等) 。因此,沒有HTML開發人員在進行模擬,有人使用CSS / 3和JS技能使其看起來很好。相反,你可以通過最少的控制/風格選項獲得Rich / Prime的事實控制 - 結果坦率地說是“笨拙”。 - Darrell Teague 2013年5月18日15:31

同意。JSF讓簡單的事情變得太複雜......我通常將JSF標籤和EL與JSP內部的javascript混合在一起......糟糕的風格可能更容易實現我的目標。 - texasbruce 2013年7月13日9:35

是的,我會遠離JSF並使用spring作為後端和Vaadin(vaadin.com)作為前端 - FearlessHyena 2014年9月30日21:38

@Adam JSF能夠將您重定向到具有ManagedBean方法返回值的頁面,或者只是將頁面代碼放在action屬性中。此外,JSF正在為您做很多工作 - 例如,您將如何驗證傳遞給服務器的參數?你如何將表單字段綁定到enity? - iozee 2014年10月10日9:57